15.oauth2 + oidc 实现 server部分
OAuth主要做授权。
OpenIdConnect简历在OAuth2.0基础之上的,相结合
客户端、授权中心、Resource Owner用户本身(资源的拥有者)、Resource Server
通过ProfileService把Cliams转换返回给客户端
这个代码里面已经包含了最新的登陆和注册
启动程序
在这个例子之上进行IdentityServer的开发。把MVC的注册和登陆变成一个单点登陆,把他的登陆信息返回给第三方
输入IdentityServer4,添加上最新的包引用
这时候需要一个config,创建一个config.cs的类,把之前写过的config拷贝过来
现在是个空的
之前代码拷贝过来,只保留一个Client
这里我们用隐式的流程,隐式模式和授权码的模式非常像
然后再定义ApiResource
再定义TestUser在这个命名空间下
claims先去掉,这里先不加
这几个都是config内获取的
这里还需要加IdentityResource
所以这里需要再新建一个方法返回IdentityResource的可枚举类型
openId、Profile、Email是IdentityServer测试的方法给我们提供的
把它添加到config的配置里面
最后在mvc的这里添加上IdentityServer()的中间件
这里的UseAuthentication我们去掉了
IdentityServer()的中间件
这样我们就把IdentityServer添加到我们的MVC程序里了
在Controller里面把逻辑实现
把原来登陆的逻辑去掉。
这里注释掉
注册的代码全部注释掉
这里注释
使用SignOutAsync来替代
改造登陆
users注入一下
修改这里的登陆的ViewModel,Emial修改为UserName
登陆页面view内也要绑定为UserName
登陆成功我们需要传一些参数过去。这样就通过IdentityServer4实现了登陆,并实现了跳转
这样我们登陆的逻辑就实现完了