Azure 为什么AAD发布的访问令牌包含有关用户的信息?
我读了很多关于OAuth 2.0和OpenId Connect的书,理论上我现在理解了这两个概念。Azure 为什么AAD发布的访问令牌包含有关用户的信息?,azure,.net-core,oauth-2.0,azure-active-directory,openid-connect,Azure,.net Core,Oauth 2.0,Azure Active Directory,Openid Connect,我读了很多关于OAuth 2.0和OpenId Connect的书,理论上我现在理解了这两个概念。 但是如果我去实践,有些事情仍然让我困惑,我希望你能以某种方式启发我… 首先,在如何在AAD环境中保护.net核心API的所有代码示例中,我在“配置”部分找到了如下行: app.UseAuthentication() 以及ConfigureServices部分中的以下行: services.AddAuthentication(JwtBearerDefaults.Authentica
但是如果我去实践,有些事情仍然让我困惑,我希望你能以某种方式启发我…
首先,在如何在AAD环境中保护.net核心API的所有代码示例中,我在“配置”部分找到了如下行:
app.UseAuthentication()
以及ConfigureServices部分中的以下行:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/xxxxxxxx";
options.Audience = "xxxx-xxx-xxx-xxx-xxxx";
});
但是,要访问我的API,我使用的不是ID令牌,而是访问令牌—什么是授权,而不是代码示例中的“身份验证”。这是可行的,但我不能百分之百地理解它。
因此,我的第一个问题是:
我读到访问令牌没有标准格式。他们可以是JWT或不是,可以有观众或不是等等。因此,你甚至可以像微软一样将用户信息放入令牌中。访问令牌包含诸如“姓氏”或“给定名称”等声明。
相反,Id令牌具有标准化的格式,以确保每个人都以相同的方式进行身份验证 如果人们使用访问令牌访问我的API,我可以读取他们的姓名或电子邮件地址,例如“user.identity.name”。此值可用于存储编辑或插入内容的信息。
所以我用访问令牌获取关于用户的信息
所以我的第二个问题是:
希望这有助于澄清一些问题,而不是使问题更加混乱 好的,谢谢你的详细回答。。这是否意味着微软不遵循开放id和oauth标准?我到处都在读访问令牌不应该用于身份验证。。。那么,为什么任何应用程序都需要id令牌呢?我不能在Microsoft环境中只使用访问令牌吗?从技术上讲,客户端应用程序不使用访问令牌进行身份验证。从客户端应用程序的角度来看,ID令牌是authen使用的