gpt4 book ai didi

c# - 如何延长 IdentityServer 3 颁发的 JWT token 的生命周期

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:54 25 4
gpt4 key购买 nike

我正在尝试设置一个 IdentityServer 3 Web 应用程序而不是硬件,这是一个与软件开发相关的问题。我正在尝试学习如何使用该技术并生成我的 api 可以使用的 JWT token 。问题是我一辈子都找不到设置 token 到期的位置。它总是在大约一个小时后产生 401。理想情况下,出于测试目的,我想将其延长很长时间,这样我就不必将我的 JWT token 复制并粘贴到 fiddler 中,从而大大减慢我的开发和学习过程。

我的客户

new Client
{
ClientId = "scheduling"
,ClientSecrets = new List<Secret>
{
new Secret("65A6A6C3-A764-41D9-9D10-FC09E0DBB046".Sha256())
},
ClientName = "Patient Scheduling",
Flow = Flows.ResourceOwner,
AllowedScopes = new List<string>
{
Constants.StandardScopes.OpenId,
Constants.StandardScopes.Profile,
Constants.StandardScopes.OfflineAccess,
"read",
"adprofile",
"scheduling"
},
Enabled = true
}

我的范围

   new Scope
{
Name = "scheduling",
Claims = new List<ScopeClaim>
{
new ScopeClaim(Constants.ClaimTypes.Role,true),
new ScopeClaim("scheduling_id",true),
new ScopeClaim("expires_at",true) //I have tried "expires_in" and [Constants.ClaimTypes.Expiration] also with no luck
}
}

用于客户特定 claim 的方法:

  private IEnumerable<Claim> GetClaimByClientId(string client_id)
{
List<Claim> claims = new List<Claim>();
switch(client_id.ToLower())
{
case "scheduling":
claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Role,"administrator"));
claims.Add(new Claim("scheduling_id", "2"));
//claims.Add(new Claim("expires_in", "2082758400")); //01/01/2036
//claims.Add(new Claim(Constants.ClaimTypes.Expiration, "2082758400")); //01/01/2036
claims.Add(new Claim("expires_at", "2082758400")); //01/01/2036
break;
default:
throw new Exception("Client not found with provided client id.");
}


return claims;
}

实际验证凭据的代码:

            if (ActiveDirectoryHelper.ValidateCredentials(context.UserName, context.Password, adName))
{

List<Claim> lstClaims = new List<Claim>
{
new Claim("obj_id",user.UserID.ToUpper()),
new Claim(Constants.ClaimTypes.Email, string.IsNullOrEmpty(user.Email) ? string.Empty : user.Email.ToLower()),
new Claim(Constants.ClaimTypes.GivenName,user.FirstName),
new Claim(Constants.ClaimTypes.FamilyName,user.LastName),
new Claim("EmployeeNumber",user.EmployeeNumber),


};

lstClaims.AddRange(GetClaimByClientId("scheduling"));


context.AuthenticateResult = new AuthenticateResult(user.UserID,user.Username, lstClaims);
}
else
{
context.AuthenticateResult = new AuthenticateResult("Invalid Login.");
}

最佳答案

可以使用 Client 为客户端应用程序设置访问 token 生命周期(我假设这就是 JWT token 的意思)属性 AccessTokenLifetime

默认设置为 3600 秒(1 小时)。

关于c# - 如何延长 IdentityServer 3 颁发的 JWT token 的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026793/

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