Scope
是什么?有哪几种类型?每种类型都怎么使用?
StandardScopes.All是什么概念?
解释:在Scope的Claims属性里包含的所有声明(类型是ScopeClaim,它的name属性对应于User里的Claims属性里指定的声明的'声明类型'所对应的'声明类型'的值)
请求时通过指定所需要的scope,来根据scope里约定的声明去取用户里匹配相应声明类型的值的声明
资源授权:是通过:Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc 实现(webapi应该也有相应的包)
可以通过为Controller的方法指定特征:[ResourceAuthorize("Read", "ContactDetails")] 参数依次是: action、resources;然后通过重写ResourceAuthorizationManager类的方法CheckAccessAsync来实现细粒度的资源授权。
Client
Client可以访问的Scope可以通过它的属性来配置;也可以配置为可以访问所有的Scope(AllowAccessToAllScopes = true)
User
User也许必须至少有3个属性:Username、Password、Subject
User可以有一个声明对象数组,每个声明(Claim)都用来表示什么?
需要我研究如何用EF持久化User的数据;IdentityServer提供对Asp.net Identity和MemeberShipReboot的直接支持
Claim
声明可以有声明类型、声明的值
可能每个Claim实体对象都可以看作一个Claim类型
Thinktecture IdentityServer v3 是一个.NET 平台上开源的OpenID Connect 提供者 和 OAuth2 验证服务器。
下面的代码片段使用服务端客户凭据获得sampleApi的访问令牌。
private async Task<TokenResponse> GetTokenAsync()
{
var client = new TokenClient(
"https://localhost:44319/identity/connect/token",
"mvc_service",
"secret");
return await client.RequestClientCredentialsAsync("sampleApi");
}