OpenId Connect 身份验证和 Azure AD 范围混淆

OpenId Connect Authentication & Azure AD Scopes Confusion

我试图了解我在 OpenIdConnectAuthenticationOptions 的范围 属性 中请求的范围与我的访问令牌中返回的内容之间的相关性。

当我只请求“openid profile”时,我得到了用户或管理员同意的所有范围。此外,返回的访问令牌版本似乎取决于范围请求。例如,如果我包含我注册的“api://.......”。我相信我在清单中将我的网络应用程序和 api 配置为版本 2。

例如:“openid profile”returns 我的访问令牌中的范围“Directory.Read.All Group.Read.All User.Read profile openid email”。

某些范围是否会自动映射到其他范围,或者这是否有一些逻辑?根据我自己的理解,我正在尝试为正在发生的事情找到一些合乎逻辑的因果关系。

当您仅将“openid profile”放入范围时,访问令牌“Directory.Read.All Group.Read.All User.Read profile openid email”中的默认范围用于 Microsoft Graph API 默认。这是设计使然。

因为这个access token是用来call the UserInfo endpoint的,其中用户信息其实是来自于Microsoft Graph

当您将“api://.......”放入范围时,访问令牌将用于您的 API 应用程序。访问令牌中有一个 aud 声明,用于标识令牌的预期接收者。你可以检查一下。