【发布时间】:2017-10-08 05:01:02
【问题描述】:
我正在使用 IdentityServer 来控制对 API 的访问。我有一个单独的身份验证 API,它发出令牌并验证访问请求以保护 API。
我让用户能够通过安全的 Web 应用程序生成访问令牌。我正在使用资源所有者密码凭证流。
有没有一种方法可以在用户无需登录并请求它的情况下发出刷新令牌?或者有什么方法可以设置初始访问令牌的过期时间?
代码
这是我用来生成令牌的代码。
DiscoveryResponse disco = await DiscoveryClient.GetAsync("http://localhost:27144");
TokenClient tokenClient = new TokenClient(disco.TokenEndpoint, "My Client", "MySecret");
TokenResponse tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync("testUser", "testPassword");
【问题讨论】:
-
您能提供更多信息吗?如果您设置
AllowOfflineAccess = True,IdentityServer 会自动返回refresh_token。也可以设置AccessTokenLifetime... -
@moritzg 我将 allowOfflineAccess 标志设置为 true,并将 absoluteRefreshTokenLifetime 设置为 31540000,这应该是一年。但是,令牌响应对象为 expiresIn 属性返回 3600。我可以看到还返回了一个 refresh_token 。我是否在授权标头中传递它?
-
你所说的“令牌响应对象”是指哪个令牌?
-
@moritzg 我已经在问题中添加了代码。我说的token响应对象是我调用RequestResourceOwnerPasswordAsync()方法时返回的对象
标签: c# asp.net-mvc oauth-2.0 openid-connect identityserver4