基于IdentityServer4的声明的授权
Posted 哈哈兮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于IdentityServer4的声明的授权相关的知识,希望对你有一定的参考价值。
## 概述
基于Asp.net Core 1.1 ,使用IdentityServer4认证与授权。
## 参考资料
[微软教程](https://docs.microsoft.com/zh-cn/aspnet/core/security/authorization/claims#security-authorization-claims-based)
## 客户端的设置
### 配置与IdentityServerSystem连接
//配置与IdentityServerSystem连接
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "Cookies"
});
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
////For MVC Implicit Flow
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "oidc",
SignInScheme = "Cookies",
Authority = "http://localhost:5000",
ClientId = "testClientID",
RequireHttpsMetadata = false,
Scope = { "testclientidentity" },
GetClaimsFromUserInfoEndpoint = true,
SaveTokens = true
});
### 在Controller的Action中加入权限
using Microsoft.AspNetCore.Authorization; public class TestsController : Controller [Authorize(Policy = "EditInfo")] public IActionResult Edit(){ }
}
## IdentityServer4服务器端设置
### 创建ClientID
ClientID为testClientID,
### 创建IdentityScope
创建名为testclientidentity的IdentityScope
在其中加入一些UserClaim,比如"EditInfo"
## 测试
1. 利用用户名为"a"的用户登陆程序,在进入Tests/Edit时,会提示拒绝访问的错误界面
2. 给用户"a"加入名为"EditInfo"的UserClaim,再次进入Tests/Edit时,会正确显示界面
以上是关于基于IdentityServer4的声明的授权的主要内容,如果未能解决你的问题,请参考以下文章
使用 IdentityServer4 对 Web API 进行基于角色的授权
IdentityServer4 基于角色的 Web API 授权与 ASP.NET Core 身份