本篇说说ids中的网页登陆以及单点登陆的大致原理,主要是以基本跑通为目的,下一篇开始会详细说明集成ids网页登陆原理。
最好先熟悉以下知识:
按官方文档的如下步骤可以搭建环境:
我们这里使用更直接一点的方式,使用它提供的项目模板一步到位
1、安装ids4的项目模板
dotnetnew-iIdentityServer4.Templates2、根据模板创建ids4项目
dotnetnewis4inmem此模板创建会直接帮你创建要给立即可用的ids服务应用,里面的客户端、资源、用户都是以内存的形式定义的。直接F5就可用跑起来
3、在ids服务端中注册mvc1、mvc2的配置
就是在ids登记下这俩客户端,我是ids,你俩要让我来帮你们做登陆得先来我这里登个记对吧
在Config.Clients中添加如下配置:
4、新建mvc1、mvc2客户端
5、配置mvc1客户端,mvc2类似略了
5.1、调整俩项目启动监听的端口,防止3个项目的端口冲突,我这里ids用的5001,mvc1用的5002,mvc2用的5003
5.2、引用nuget包
install-packageMicrosoft.AspNetCore.Authentication.OpenIdConnect5.3、在startup.cs中做配置
1publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv)2{3//略...4app.UseAuthentication();5app.UseAuthorization();6//略...7}5.5、找个Controller的Action来充当受保护的页面,比如HomeController.Index
[Authorize]publicIActionResultIndex(){returnView();}5.6、为了容易看到效果,可用修改下首页的视图,显示下当前登陆用户的信息
1@usingMicrosoft.AspNetCore.Authentication2
Claims
3- 4@foreach(varclaiminUser.Claims)5{6
- @claim.Type 7
- @claim.Value 8}9
Properties
11- 12@foreach(varpropin(awaitContext.AuthenticateAsync()).Properties.Items)13{14
- @prop.Key 15
- @prop.Value 16}17
Ctrl+F5走起...
录入测试账号和密码,ailice点击登陆,此时会跳转到mvc1的首页,因为已登陆成功,所以此时页面可用正常方案
注销时要清楚本地登陆和ids那边的登陆状态,在mvc1和2的HomeController中加入如下Action
publicIActionResultLogout(){returnSignOut("Cookies","oidc");}此时访问下这个Action就可用注销了。
ids一看,这用户登陆过,就直接携带用户信息和token并跳转到回调客户端的".../signin-oidc",客户端的后续步骤不变
本篇只是草草说了各大概,下一篇会先说说ids网页登陆里涉及到的交给核心类,之后会重新按这里的流程走走源码...