首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从web api在令牌中添加声明

从web api在令牌中添加声明
EN

Stack Overflow用户
提问于 2018-11-29 19:05:32
回答 1查看 510关注 0票数 1

我正在做一个使用IdentityServer4、Identity和应用程序接口的项目。

该接口受IDS4保护。

API和IDS4在同一个项目中,所以我的解决方案中有3个项目:-包含IdentityServer和API的MVC web项目-使用MongoDB作为数据库提供程序的Identity实现-模拟客户端的控制台应用程序

我的客户端使用IDS4进行身份验证,获取access_token,然后使用令牌调用应用程序接口。这部分运行得很好。

现在,我被要求在调用api中的特定操作时向令牌添加一些声明。

我已经在谷歌上搜索过了,但我找不到任何解决方案,我也不确定这是不是一个好主意。API是否可以通过添加一些声明来修改接收到的访问令牌,然后将令牌发回?

另一种选择是发送另一个令牌作为响应,但我找不到使用RS512对令牌进行签名的方法。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-12-05 19:19:14

您可以使用IProfileService添加额外的索赔

代码语言:javascript
复制
public class ProfileService : IProfileService
{
    public Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        string subject = context.Subject.Claims.ToList().Find(s => s.Type == "sub").Value;
        try
        {
            // Get Claims From Database, And Use Subject To Find The Related Claims, As A Subject Is An Unique Identity Of User
            //List<string> claimStringList = ......
            if (claimStringList == null)
            {
                return Task.FromResult(0);
            }
            else {
                List<Claim> claimList = new List<Claim>();
                for (int i = 0; i < claimStringList.Count; i++)
                {
                    claimList.Add(new Claim("role", claimStringList[i]));
                }
                context.IssuedClaims = claimList.Where(x => context.RequestedClaimTypes.Contains(x.Type));
                return Task.FromResult(0);
            }
        }
        catch
        {
            return Task.FromResult(0);
        }
    }

    public Task IsActiveAsync(IsActiveContext context)
    {
        return Task.FromResult(0);
    }
}

在“启动”文件中注册服务:

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddIdentityServer()..Services.AddTransient<IProfileService, ProfileService>();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53537592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档