我们有一个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确实反正
谢谢你的回答,我猜我必须等MS去修复它。 关于第2点,我明白了oauth和openid connect之间的区别,我们目前使用openid连接作用域并且获得了id_tokens,所以我的问题更接近于,如果通过使用oidc获得了任何东西在这种情况下,正如你所指出的那样,我们已经在向用户请求了。读, – vruum