来自服务的Microsoft Graph API

时间:2017-06-02 20:13:09

标签: .net azure-active-directory microsoft-graph msal

我尝试一次授权Office 365,允许用户只登录一次。

这是我目前的代码

IdentityClientApp = new ConfidentialClientApplication(this.clientId, "[uri]", new ClientCredential("[private key from Application Secrets section]"), new Microsoft.Identity.Client.TokenCache(), new Microsoft.Identity.Client.TokenCache());
authResult = await IdentityClientApp.AcquireTokenForClientAsync(new []{ "User.Read.All" });

我得到一个例外:AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope User.Read.All is not valid.

我不确定我应该如何获得有效令牌,我可以退出并重新启动,而不会每小时弹出authpage。

1 个答案:

答案 0 :(得分:1)

根据您的说明,您正在使用带有MSAL库的Azure AD V2.0的客户端凭据流。在Azure AD V2.0中使用客户端凭据流时,为此请求中的scope参数传递的值应该是所需资源的资源标识符(应用程序ID URI),并附加.default后缀。对于Microsoft Graph示例,值为https://graph.microsoft.com/.default

请点击here了解详情。 here是使用Azure AD V2.0端点的客户端凭据流的教程。

此外,由于您使用的是应用身份(客户端凭据流),因此用户无需登录您的应用。请详细了解authentication Scenarios for Azure AD。如果您想使用用户身份,可以尝试OAuth 2.0 authorization code flowhere是代码示例。使用用户身份,可以延长会话的持续时间(用户在一小时后不会注销)。您可以尝试通过在页面中添加隐藏的iframe来更新会话,该iframe会定期按时间点击新路线(在登录操作中,您可以获取新的访问令牌)。有关详细信息和代码示例,请参阅文章controlling a Web App’s session duration