IdentityServer4是开源的基于.Net Core的鉴权中间件,有兴趣的可以去https://github.com/IdentityServer/IdentityServer4自行了解。
Blazor分为WebAssembly和Server两种模式,由于到目前为止,笔者主要学习的是WebAssembly模式,所以本文就来尝试一下WebAssembly与IdentityServer4的集成。
1. 安装IdentityServer4
安装IdentityServer4其实很简单,官方提供了命令行让你可以从零开始创建一个可以运行的网站,首先创建一个空白解决方案,然后进入解决方案所在目录,并按顺序执行以下命令:
//安装IdentityServer4的项目模板
dotnet new -i IdentityServer4.Templates
//创建一个空项目,并配置IdentityServer4中间件
dotnet new is4empty -n IdentityServer(这是项目名字,你也可以指定其他名字)
//进入项目所在目录
cd IdentityServer
//安装QuickStart, 此时会创建需要的Controller,View等
dotnet new is4ui
最后将新创建的项目添加到你的解决方案,并修改一下Startup.cs文件:
主要修改有两个,一个是把QuickStart提供的测试用户加入系统(这个很重要,否则Blazor那边将取不到用户的基本资料),另一个是打开MVC服务。
现在运行起来就能看到以下页面了,尝试点击红色框登录试一试,测试的用户名和密码在Quickstart\TestUsers.cs文件当中。
2. 配置IdentityServer4
接下来就是配置IdentityServer, 包括三个方面:
- Identity Resource
- Api Scope
- Client
全部配置全都在Config.cs里面,修改起来也很方便,这里主要介绍一下Client的配置,我们需要创建一个Client用来给Blazor登录使用,代码如下:
public static IEnumerable<Client> Clients =>
new Client[]
{
new Client
{
//唯一id,用来区分不同的Client
ClientId = "blazorwasm",
//使用的授权方式
AllowedGrantTypes &#