2017-08-07 133 views
1

範圍參數我已經註冊了一個應用程序與apps.dev.microsoft.com設置的Microsoft Graph

,並設置其權限是: Screen shot from apps.dev.microsoft.com panel

我得到一個令牌使用微軟的圖形API是這樣的:

https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service#4-get-an-access-token

我的範圍設定爲:scope=https://graph.microsoft.com/.default

我得到一個沒有Directory.ReadWrite.All權限的令牌。

如何修改請求以獲取apps.dev.microsoft.com門戶網站上指定的權限的請求?我應該更改範圍參數嗎?

我試着用graph.microsoft.com/directory.readwrite.all作爲暗示在線,沒有任何運氣。

+0

幾個問題: 1)你有沒有通過管理員同意過程? 2)您能否提供您使用的完整URL(減去您的實際客戶ID) 3)您可以提供您在驗證期間獲得的回覆嗎? –

+0

@ MarcLaFleur-MSFT:1.因爲我的用戶是應用程序的所有者,所以不需要管理員同意過程。還是我誤會了? 2.)我打電話給https://login.microsoftonline.com/#{tenant}/oauth2/v2.0/token帶頭文件:''Content-type'=>'application/x-www-form-urlencoded' '和body:'client_id:XYZ,範圍:'https://graph.microsoft.com/.default',client_secret:XZYY,grant_type:'client_credentials'' 3)對於上面的調用,我沒有任何錯誤,但JWT令牌不包含Directory.ReadWrite.All的權限。 –

+0

@ MarcLaFleur-MSFT如果我嘗試使用上面提到的範圍,我會得到:'消息:400,錯誤請求,{\「錯誤\」:\「invalid_scope \」,\「error_description \」:\「AADSTS70011:輸入參數'範圍'的值無效。範圍https://graph.microsoft.com/Directory.ReadWrite.All無效....' –

回答

1

要使用schemaExtentions您需要Directory.AccessAsUser.All範圍。但是,您在此處遇到的問題是您正在使用僅支持應用程序權限(其中Directory.AccessAsUser.All不是其中一個)的client_credentials授權(又名「僅限應用程序認證」)。

爲了使用任何委託權限,您需要驗證用戶而不僅僅是應用程序。委託權限就是這樣,用戶已授權(又名轉移/分配)給您的應用程序一段時間的權限。

這裏有幾個選項。如果您遇到的唯一問題是schemaExtentions並且您沒有銷售商業解決方案(ISV),那麼您最有可能不需要首先將其燒入應用程序中。請嘗試使用Graph Explorer來創建它們。

請注意,您需要先執行圖形瀏覽器的管理員同意書,然後才能與您的租戶共事。

另一種選擇是在應用程序中同時支持client_credentialcode撥款。如果您是ISV銷售商業解決方案,這可能是最好的選擇。執行此操作最簡潔的方法是擁有由管理員執行的「設置」應用程序。管理員使用授權code進行身份驗證,並創建所有必需的擴展。這個過程的好處是,它提供了一個乾淨而合乎邏輯的地方來啓動管理員同意您爲生產應用程序需要的client_credential資助。

需要注意的一件事是,您可以使用Auth CodeImplicitClient Credential撥款的相同應用ID。根據您選擇的授權,它將使用您定義的代理或應用程序權限。這使得上面的場景非常簡單。

不幸的是,註冊用戶體驗並不能很好地表明如何應用委託和應用程序權限,導致許多用戶認爲這兩個組都始終在使用。實際上,根據使用的授權類型,只有一組適用。一個例外是管理員同意,其同意所有所請求的權限(即,您不需要單獨的委託和申請同意流程)。

+0

謝謝您的詳盡回覆!我想用Graph工具來做,但即使用它,我也做不到。我使用我的帳戶登錄並授予權限(Directory.AccessAsUser.All,Directory.Read.All)等待幾分鐘,然後我找回相同的消息。奇怪:/ –

+0

這很奇怪。另一種選擇可能是在本地運行瀏覽器(它是一個Node應用程序)。這可能會讓你更深入地瞭解正在發生的事情。 https://github.com/microsoftgraph/microsoft-graph-explorer –

+1

這工作!它的版本不同?很高興知道問題是什麼。 –