我有一个完成了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")
}
}
}
为什么我没有在令牌中获得用户声明?
答案 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)
});