相关疑难解决方法(0)

如果没有第二次调用服务器,请求确认IdentityServer 3不支持自定义声明

在我看来,我无法在我第一次调用Identity Server的响应中添加自定义声明(这是特定于用户的).有人可以证实这个假设吗?

以下是我们在应用程序中的操作:使用ResourceOwner Flow,我们的Web应用程序(服务器端)调用Identity Server发送用户的logonID,密码和范围.

我们找回一个包含sub,idp,client_id等标准声明的JWT; 但我们想补充一点.为简化起见,假设另一个声明是用户的emailAddress.

看来我们必须再次调用Identity Server并获取一个新令牌.那是对的吗?是不是有某些方法可以在初始调用中获得该值?

oauth claims-based-identity

6
推荐指数
1
解决办法
1270
查看次数

如何使用自定义用户服务添加声明以访问IdentityServer3的令牌

我正在尝试创建一个自定义用户,对其进行身份验证,然后使用身份服务器3将用户声明返回到有角度的应用程序中。我查看了示例,尤其是CustomUserService项目。

编辑我已根据进度将问题更新为:

在starup.cs文件中,我具有作用域,并且正在加载客户端

var idServerServiceFactory = new IdentityServerServiceFactory()
                    .UseInMemoryClients(Clients.Get())
                    .UseInMemoryScopes(Scopes.Get());
                   //.UseInMemoryUsers(Users.Get());
Run Code Online (Sandbox Code Playgroud)

然后在UserServices.cs中覆盖

public override Task AuthenticateLocalAsync(LocalAuthenticationContext context)
        {
            string hashedPassword = string.Empty;
        string salt = string.Empty;

        //pull users 
        using (IdentityModelContext ctx = new IdentityModelContext())
        {
            IIdSrvUserRepository ur = new IdSrvUserRepository(ctx);
            Users = ur.GetAll().ToList();
           }
        //salt curent password        
        var user = Users.SingleOrDefault(x => x.UserName == context.UserName);
        if (user != null)
        {
            salt = user.Salt;
            hashedPassword = IqUtils.GenerateSaltedPassword(context.Password, salt);
            if (user.UserName == context.UserName && hashedPassword == user.Password)
            {
                try
                {
                    context.AuthenticateResult = …
Run Code Online (Sandbox Code Playgroud)

c# claims-based-identity identityserver3

5
推荐指数
1
解决办法
3834
查看次数