角色 - Identity Server 4

时间:2018-05-25 09:01:08

标签: roles identityserver4 claims

我有一个完成了Asp.Net Core 2.0 API,Identity Server和WPF应用程序的项目。 我登录后可以从WPF访问API。

现在我正在尝试实现角色,这样我就可以授权某些用户访问API。

在Config.cs中,我宣布我的客户并添加到范围:

set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=c++17")

声明TestUser:

  new Client
            {
             AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    IdentityServerConstants.StandardScopes.Email,
                    IdentityServerConstants.StandardScopes.OfflineAccess,
                    "fiver_auth_api",
                    "role"
                },
            AlwaysIncludeUserClaimsInIdToken=true
           }

在我使用的控制器中:

  return new List<TestUser>
        {
            new TestUser
            {
                SubjectId = "", Username = "", Password = "",
                Claims = new List<Claim>
                {
                    new Claim(JwtClaimTypes.Email, "AliceSmith@email.com"),
                    new Claim(JwtClaimTypes.EmailVerified, "true", ClaimValueTypes.Boolean),
                    new Claim(JwtClaimTypes.Role, "Admin"),
                    new Claim(JwtClaimTypes.Scope, "openid offline_access fiver_auth_api")
                }
            }
       }   

为什么我没有在令牌中获得用户声明?

1 个答案:

答案 0 :(得分:2)

对于谁感兴趣,有我如何解决它: 在配置文件中添加角色列表:

var request = require('request'); 
var url= 'your link here';
var headers = { // add the browser sent header request data
'User-Agent':       "Mozilla/5.0 (Windows NT 6.3; rv:48.0) Gecko/20100101      Firefox/48.0",
'Content-Type':     'application/x-www-form-urlencoded'    
}
// Configure the request
var options = {
url: url,
method: 'POST',
headers: headers,
form: {'user': 'value', 'pass': 'value'}
}
// Start the request
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
});