2017-03-16 121 views
0

我們有一個web應用程序使用openid連接,以azure作爲身份提供者來登錄用戶。所以用戶在登錄時發送到一個URL,如:admin_consent爲openid連接和動態範圍

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?response_type=id_token+token&client_id=3{clientId}&response_mode=form_post&redirect_uri=http://localhost:8765/ms/oidc/signon/response&scope=openid+profile+https://graph.microsoft.com/user.read&state=1234&nonce={nonce} 

這工作得很好,但需要用戶同意我們的應用程序的權限作用域他們使用它的第一次。

我們想提供office365管理員同意代表他們的全部租戶的能力,所以我們將其發送到端點,如:

https://login.microsoftonline.com/common/adminconsent?client_id={clientId}&state=12345&redirect_uri=http://localhost:8765 

這似乎也做工精細,並且管理員我告知他們將代表其租戶中的所有用戶同意。但是,用戶在首次登錄時仍顯示同意提示。 這有一定道理,因爲應用程序只與user.read許可登記的,所以如果我們不是發送用戶

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?response_type=token&client_id={clientId}&response_mode=form_post&redirect_uri=http://localhost:8765/ms/oidc/signon/response&scope=https://graph.microsoft.com/user.read&state={state}&nonce={nonce} 

沒有動態許可請求和響應類型只設置令牌,管理員同意作品,並且用戶不會收到同意提示。 所以,我想我有兩個問題:

1)這是它應該如何工作,或有某種方式授予管理員同意的配置文件和openid作用域?

2)我是否真的錯過了任何不需要這些(openid + profile)權限?我不接收和響應id_token,但似乎authentication_token已經包含比id_token確實反正

回答

1

1甚至更多的信息),這是它是如何工作的,或者是有一些方法來授予管理員同意配置文件和openid範圍?

似乎在蔚藍的廣告V2.0同意框架,著名的範圍(OpenID的,配置文件)的錯誤應該是默認,當你做管理員權限授予。請參閱this link

2)我是不是缺少實際通過不要求這些(OpenID的+配置文件)的權限什麼?我不接收和響應id_token,但似乎authentication_token已經包含比id_token確實反正

不要使用OpenID的,因爲你還沒有加入OpenID的範圍內連接更多的信息,所以不會返回id_token。但是由於您擁有microsoft graph api的user.read權限,因此您可以使用microsoft graph api來讀取用戶的基本信息。 Id_token和訪問令牌不同,id_token用於標識已認證的用戶。 access_token用於證明對受保護資源的訪問權限。請點擊here瞭解更多詳情。

+0

謝謝你的回答,我猜我必須等MS去修復它。 關於第2點,我明白了oauth和openid connect之間的區別,我們目前使用openid連接作用域並且獲得了id_tokens,所以我的問題更接近於,如果通過使用oidc獲得了任何東西在這種情況下,正如你所指出的那樣,我們已經在向用戶請求了。讀, – vruum