2017-09-18 19 views
0

我期待在樣本代碼在 https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console是否可以在未經同意的情況下使用Active Directory Graph Api?

看來無論我們獲得應用程序或用戶的AD客戶端,它需要用戶的同意。考慮到用戶可以提供客戶端ID或任何其他密碼/保密信息,我們是否可以在未經用戶同意的情況下使用圖形API?

我正在研究應該作爲Windows服務在後臺運行的項目。如果需要一段時間的同意,那麼我們可能無法使用Windows服務。

感謝

回答

0

沒有,添加一個委託權限的應用程序不會自動授予同意租戶內的用戶。除非管理員單擊Azure門戶中應用程序頁面的Required Permissions部分中的Grant Permissions按鈕以執行管理員同意,否則用戶仍必須手動同意在運行時添加的委派權限。在該代碼示例中,如果您選擇在應用程序模式下運行控制檯應用程序,則管理員用戶需要同意應用程序權限。

請點擊here以瞭解關於用戶和管理員同意的更多詳細信息。

在您的方案中,您可以使用Client Credentials Grant Flow,它允許Web服務(機密客戶端)使用自己的憑據而不是模擬用戶。爲Azure AD圖形API添加權限後,單擊Azure門戶中具有管理員帳戶的應用程序頁面的Required Permissions部分中的Grant Permissions按鈕。在管理員同意後,您可以使用應用程序的身份獲取Graph API的令牌,並且不會要求您在運行時同意。使用客戶端憑證流程的Code samples供您參考。

0

由於@Nan Yu表示,您可以使用您的目錄的管理員帳戶達到授予權限。另外,你的情況還有另一種解決方案。它位於您發佈的鏈接的底部。我在我的測試實驗室嘗試過它,它工作。解決方案如下:

如果您想在應用程序模式下運行控制檯應用程序(這是有點人爲的,因爲這確實應該作爲本地客戶端運行),您需要事先手動強制同意。在這裏,管理員用戶需要同意。您可以通過打開瀏覽器,然後將下面的網址,你tenantId更換tenantId強迫同意,並app-mode-application-id應用程序ID爲自己的應用模式應用:

https://login.microsoftonline.com/<tenantId>/oauth2/authorize?client_id=app-mode-application-id>&response_type=code &redirect_uri=http%3A%2F%2Flocalhost%2F&response_mode=query &resource=https%3A%2F%2Fgraph.windows.net%2F&state=12345 

在簽署後(如果尚未登錄),請單擊同意頁面中的接受。然後您可以關閉瀏覽器。現在您已預先同意您可以嘗試在應用模式下運行控制檯示例。

+0

嗨,@urlreader,如果這個答案對您有幫助,請將其標記爲幫助更多人的答案。謝謝! –

相關問題