gpt4 book ai didi

asp.net-core - expires_in 或 expires_at 用于 OpenId 连接中的访问 token ?

转载 作者:行者123 更新时间:2023-12-04 12:10:54 26 4
gpt4 key购买 nike

我很困惑为什么 OpenId 连接规范(来源:https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse)引用 JWT 中的“expires_in”键,而在 ASP.NET Core 2 中,当使用 IdentityServer4 时,使用 expires_at,但如果您希望操纵它,您将其称为“expires_in”。
我在这里错过了什么吗?

下面是一个片段,显示了我所指的内容 - tokenResult 通过传入所需的客户端信息 + secret (在 tokenClient 中定义)以及当前刷新 token (存储在 currentRefreshToken 中)来保存新刷新的 token 。当访问 token 中显示/存储的属性名为“expires_at”时,为什么 tokenResult 具有属性“ExpiresIn”?它们不应该是统一的,即使规范明确规定它应该被命名为“expires_in”(属性遵循它,但 JWT 中的实际实现没有)?

var tokenResult = await tokenClient.RequestRefreshTokenAsync(currentRefreshToken)
var expiresAt = DateTime.UtcNow + TimeSpan.FromSeconds(tokenResult.ExpiresIn)
updatedTokens.Add(new AuthenticationToken
{
Name = "expires_at"
Value = expiresAt.ToString("o", CultureInfo.InvariantCulture)
}


编辑:我刚刚意识到“expires_at”可能不是指访问 token ,而是指整个身份验证票?请纠正我,我真的很困惑。

最佳答案

JWT 使用 iatexp作为声明名称,我不知道 expires_at在规范中。
expires_in是在 token 响应中返回的值,它指的是 access_token 的生命周期回来。我怀疑它背后的想法是允许调度刷新而不必检查 exp在 token 中声明。

您链接到的主题 ( https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse ) 显示 token 端点响应,而不是 JWT 的内容。

你在哪里看expires_at浮出水面? AuthenticationToken我认为是 ASP.Net Identity 的东西,所以它很可能是图书馆存储的计算值,与 identityserver4 无关或 OpenID Connect。

根据您的评论,OIDC 中间件会将这些属性添加到登录方案中。查看第 138 行的代码:

https://github.com/aspnet/Security/blob/7e14b052ea9cb935ec4f5cb0485b4edb5d41297a/src/Microsoft.AspNetCore.Authentication.OAuth/OAuthHandler.cs

所以基本上它是一个特定于 ASP.Net Core 的 OIDC 实现的实现细节,而不是协议(protocol)本身的一部分。

关于asp.net-core - expires_in 或 expires_at 用于 OpenId 连接中的访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com