保护你的Web Api
前面几篇集成了Blazor和IdentityServer,完成了登录以及指定页面的授权操作。本篇来实现与Web Api的集成,当然主要还是Web Api的认证操作。
在MVC模式下,通常是借助Cookie,但是Web Api更主流的还是借助Access Token(尤其是Json Web Token),具体的概念这里就不展开说了。
结合IdentityServer的例子,具体流程如下:
- Blazor通过IdentityServer完成登录。
- Blazor向IdentityServer请求一个Access Token用来访问对应的Api(默认是Json Web Token)。
- Blazor访问Api的时候在Http头里面带上Token。
- Api解析Token,并向IdentityServer验证合法性,然后完成认证操作。
1 配置IdentityServer
其实在前面的例子中,我们已经配好了IdentityServer,回顾一下IdentityServer的Config.cs文件:
我们已经配置好了ApiScopes:
public static IEnumerable<ApiScope> ApiScopes =>
new ApiScope[]
{
//这里的ApiScope就是Web Api对应的标识
new ApiScope("api")
};
public static IEnumerable<Client> Clients =>
new Client[]
{
new Client
{
//对应上面的ApiScope
AllowedScopes = { "api" },
}
};
注意区分ApiScope和ApiResource, 这里的ApiScope并不会生成Access Token里面的Audience属性,因此我们设置EmitStaticAudienceClaim=true(见IdentityServer的Starup文件)来指定一个固定的Audience。
如果需要使用Api的名称作为Audience,则要使用ApiResource
参考: