【问题标题】:Identity Server Get new token or populate claim without logout身份服务器无需注销即可获取新令牌或填充声明
【发布时间】:2018-12-09 09:16:02
【问题描述】:
隐式授权流程:
有没有办法我可以获得特定场景的新不记名令牌 (和新的 refresh_token?)。
所以我在应用程序上有一些操作,它将调用服务器上的 api,这将需要填充新的声明(以及新的不记名令牌)。
我的问题是如何(或在哪里)在不退出用户的情况下执行此操作?
谢谢,
编辑:
事实证明,隐含流中的刷新令牌是一个坏主意。
概率。提出相同问题的另一种方式...
在 Identity Server 4 中,是否有任何地方(委托、方法调用等)可用于向现有令牌添加新声明?所以例如如果我有一个端点https://myauthserver/changemypincode 并且从该端点我可以调用它(委托、方法调用等)以向令牌添加新声明(它可以创建新令牌作为结果但没关系)并返回给客户端?
【问题讨论】:
标签:
c#
security
oauth
claims-based-identity
identityserver4
【解决方案1】:
我知道这是一个老问题,但您可以通过使用 IdentityServerTools 生成新令牌来解决这个问题。
private async Task<string> CreatePaymentsTokenAsync()
{
var tokenLifeTime = 3600;
var scopes = new[] { CoinbaseAuthConsts.PaymentScope };
// Use in-built Identity Server tools to issue JWT
var token = await _identityServerTools.IssueClientJwtAsync(CoinbaseAuthConsts.AuthorityClientId,
tokenLifeTime, scopes, new[] { "YourApiName" });
return token;
}