Oauth 2.0 Microsoft id\u令牌声明中缺少OID声明
我正在使用中创建的两个应用程序。我正在使用的身份验证URL是Oauth 2.0 Microsoft id\u令牌声明中缺少OID声明,oauth-2.0,azure-active-directory,microsoft-graph-api,Oauth 2.0,Azure Active Directory,Microsoft Graph Api,我正在使用中创建的两个应用程序。我正在使用的身份验证URL是 https: //login.microsoftonline.com/common/oauth2/v2.0/authorize? client_id={client_id} &redirect_uri={redirect_uri} &response_type=code id_token &state=state &nonce=c7a966a3-d63d-4348-8ab8-bd445b0e9
https: //login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id={client_id}
&redirect_uri={redirect_uri}
&response_type=code id_token
&state=state
&nonce=c7a966a3-d63d-4348-8ab8-bd445b0e9bb1
&response_mode=form_post
&scope=openid email profile https://graph.microsoft.com/user.readBasic.all
在我的用例中,我正在捕获tid
,oid
,iss
,子
。。。来自id\u令牌的索赔
索赔
对于我的一个应用程序,对于某些用户,id\u令牌中缺少oid
声明。但我可以获得其他应用程序,我看不出在创建应用程序方面有任何区别
哪些原因可能导致oid
声明丢失
我正在使用的作用域:openid
email
user.read
只有在请求作用域profile
时才会返回oid
声明
从:
由于oid
允许多个应用程序关联用户,因此需要配置文件
范围才能接收此声明
对于没有收到
oid
声明的用户,请检查令牌以确保配置文件
范围在那里。如果它不在那里(并且您已经确认请求了它),那么您可以通过在身份验证URI的末尾添加&prompt=approve
来强制刷新该令牌的作用域。这将强制用户重新同意作用域,并确保您没有获得缓存令牌 谢谢你,马克,这真的很有帮助。根据您的评论(强制用户重新同意),用户将在每次登录时看到此同意。我们应该如何控制它,我的意思是,是否有任何方法可以捕获用户是否同意这样的信息。我最近做了一次POC,我们询问了JWT令牌,看看是否有任何缺少的作用域。如果有,我们将它们重定向回&prompt=approve
。由于他们刚刚登录,它会将他们直接放入同意页面。它确实在浏览器中引起了一些“重定向闪烁”,因为它在浏览器中来回跳转,但它仍然非常可悲。