2017-06-02 126 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