【发布时间】:2020-05-30 23:19:41
【问题描述】:
我阅读了很多关于 OAuth 2.0 和 OpenId Connect 的内容,理论上我现在了解这两个概念。
但是如果我去实践,有些事情仍然让我感到困惑,我希望你能以某种方式启发我......
首先,在所有代码示例中,如何在 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 令牌,而是使用访问令牌 Authorization,而不是“Authentication”就像在代码示例中一样。
这行得通 - 但我不能 100% 理解它。
所以我的第一个问题是:
- 访问令牌是否也以某种方式“验证”?
第二件事:
我读到访问令牌没有标准化格式。它们可以是或不是 JWT,可以有或没有观众等。因此,您甚至可以像微软一样将用户信息放入令牌中。访问令牌包含诸如“姓氏”或“名字”等声明。
相比之下,ID 令牌具有标准化格式,以确保每个人都以相同的方式完成身份验证。
如果人们使用访问令牌访问我的 API,例如,我可以使用“user.identity.name”读取他们的姓名或电子邮件地址。我可以使用这个值来存储谁编辑了某些东西或谁插入了某些东西的信息。
所以我正在使用访问令牌获取有关用户的信息!
所以我的第二个问题是:
- 我在这里做对了吗?或者应该以其他方式完成。
和:
- 访问令牌是否应该包含有关用户的信息?
【问题讨论】:
标签: azure .net-core oauth-2.0 azure-active-directory openid-connect