omi*_*goo 5 access-token oauth-2.0 jwt openid-connect
据我所知,ID Token 如下所示:
{
"iss": "http://YOUR_DOMAIN/",
"sub": "authentication",
"aud": "clien id",
"exp": 1512285980,
"iat": 1512280980,
"name": "omid",
"given_name": "omid",
"family_name": "haghighatgoo",
"gender": "male",
"birthdate": "1987-10-31",
"email": "a@b.com",
}
Run Code Online (Sandbox Code Playgroud)
访问令牌是这样的:
{
"iss": "https://YOUR_DOMAIN/",
"sub": "authentication",
"aud": [
"api-identifier",
"https://YOUR_DOMAIN/userinfo"
],
"azp": "clientid",
"exp": 1512285980,
"iat": 1512280980,
"scope": "profile email"
}
Run Code Online (Sandbox Code Playgroud)
显然,访问令牌中的所有参数也可以在 id 令牌中。那么为什么我们不应该使用 id 令牌作为访问令牌呢?我的意思是,如果使用 JWT,它们都可以通过一个令牌来处理。
OpenID connect 构建在 OAuth2 之上,并添加 ID 令牌作为额外功能。OpenID 和 OAuth2 都没有说明访问令牌的格式应该是什么(它不必是 JWT),因此您应该在问题中解释为什么您说它具有这种格式(即您是哪个 OpenID 提供商 (OP))使用)。访问令牌可以很容易地成为对存储在 OP 上的授权数据的不透明引用(例如,它还允许撤销访问权限)。
为了提供最简单的答案,您可能无法这样做,因为如果您这样做,您的OP将拒绝该请求。ID 令牌的受众是客户端,而访问令牌的受众是 OP。它们服务于不同的目的,并且将以不同的方式进行编码和验证。
ID 令牌是客户端应用程序告诉其经过身份验证的用户是谁的信息。它可能会使用非对称算法进行签名,以便客户端可以验证它是由 OP 发布的。
客户端应用程序根本不需要知道访问令牌的内容或验证它。仅当 OP 在端点接收到请求时,该令牌才需要被 OP 理解和验证userinfo。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |