2017-06-02 87 views
0

我试图授权Office 365一次,允许用户只登录一次。服务中的Microsoft Graph API

这里是我到目前为止的代码

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

根据您的描述,您正在使用Azure AD V2.0和MSAL库的客户端凭据流。在Azure AD V2.0中使用客户端凭据流时,在此请求中为范围参数传递的值应该是所需资源的资源标识符(应用程序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,其打新中签路线每隔一定时间(在登录操作,你可以获取新的访问令牌)更新会话。有关详细信息和代码示例,请参阅文章controlling a Web App’s session duration

+0

我跟着教程进一步下去当我尝试访问用户在GraphServiceClient类 – KevinA

+0

你在门户中选择的应用程序权限并且你是否允许管理员同意时,出现另一个错误'Authorization_IdentityNotFound'? –

+0

@NanYu对于Microsoft Graph的作用域值将是'https:// graph.microsoft.com/.default'。展望休息的范围价值是什么? – MK446