2017-08-31 39 views
2

我試圖用通過OAuth2驗證程序的微軟圖形API但是我努力工作,如何使用委託權限,並且不需要用戶登錄委託上的後臺權限。使用使用Microsoft圖表

我很高興到應用程序與自己進行一次認證,但是這將會在守護進程/服務的運行,不會通過用戶進行交互。因此,我不能使用Microsoft描述Delegated Permissions的方式,因爲首先使用/authorize,然後可以撥打/token

我知道你可以使用密鑰/token,但似乎只使用應用程序權限而不是委託 - 這是我有權訪問的。

有沒有辦法使用委託權限,就好像我是一個用戶,但不必每次使用一個登錄頁面的用戶進行身份驗證?

回答

2

這是不可能的。術語「授權」在此處是非常有意的,因爲它意味着「用戶已將其權限授予您的應用程序,因此您可以代表那個用戶」。應用程序權限不會被委派,因爲上下文中沒有user將其訪問權委託給您。

大部分的微軟圖形功能,可工作在應用和委託作用域所以在很多情況下你仍然可以執行相同的場景。有一些注意事項,如使用速記/me,當沒有用戶驗證時(而不是用戶需要使用/users[{id}])則不存在。然而,有些情況下,沒有相應的應用範圍,並且這些情況經常被用來縮小差距。

+0

如此以來應用程序的權限需要管理員的批准和授權訪問的所有項目(不完美適用於大型廣告),如果我已經設置委託權限的應用程序,但仍然使用API​​令牌方法我將能夠使用/用戶[{id}]但僅限於我的用戶有權訪問的內容? – Dom

+0

如果您已請求需要管理員同意的委託權限(即User.Read.All),並且您已收到來自管理員的同意,則是。一旦「用戶」通過OAUTH,他們將有權執行對'/ me'和'/ users {別人而不是我'端點的呼叫。他們仍然不能執行他們不會的功能(例如,如果'user'不能正常編輯其他'users',那麼你的應用程序將無法做到這一點)。 –

+0

並且沒有辦法不使用僅限管理員沒有用戶通過用戶界面登錄應用程序的所有應用程序權限? – Dom