IdentityServer4 sign-in
Sign-in
IdentityServer 代表 user 分配token之前,user必须登录IdentityServer
Cookie authentication
使用 cookie 进行身份认证的方式,是通过 Asp.Net Core 的 cookie authentication handler 实现的。
IdentityServer 注册了两个 cockie handler(一个用来身份认证中的session,另外用于一个temporary external cookie)。两者是默认配置使用的,可以通过 IdentityServerConstants类获得他们的名称(DefaultCookieAuthenticationScheme 和 ExternalCookieAuthenticationScheme)
以上的cookie只提供一个基本的配置(过期时间和 sliding),也可以通过注册自己的cookie handler来控制更多的内容。当使用ASP.NET Core中的AddAuthentication时,IdentityServer使用与AuthenticationOptions上配置的DefaultAuthenticateScheme匹配的cookie处理程序。
重写 cookie handler configuration
ConfigureService 时,在DI中注入 IdentityServer (通过AddIdentityServer)之后,再天剑自定义的 cookie authentication handler
services.AddIdentityServer()
.AddInMemoryClients(Clients.Get())
.AddInMemoryIdentityResources(Resources.GetIdentityResources())
.AddInMemoryApiResources(Resources.GetApiResources())
.AddDeveloperSigningCredential()
.AddTestUsers(TestUsers.Users);
services.AddAuthentication("MyCookie")
.AddCookie("MyCookie", options =>
{
options.ExpireTimeSpan = ...;
});
NOTE IdentityServer 内部会调用
AddAuthentication和AddCookie方法,并使用IdentityServerConstants.DefaultCookieAuthenticationScheme的自定义 Scheme,所以需要在调用AddIdentityServer之后再去调用这两个方法进行覆盖重写。
用户登录接口和身份认证管理系统
IdentityServer 没有提供 user 身份认证的用户界面或者用户数据库。自行开发。
Login 的流程

NOTE open-redirect attack,确保 returnUrl 是合法的, 参考 interaction service
Login Context
在 interaction service 调用 GetAuthorizationContextAsync 可以在登录页面获取到request的上下文信息(比如:client, 提示参数, idP(identity provider) 提示等等),以便于自定义登录的体验。
生成 cookie 和 claims
在 Asp.Net 的HttpContext中有身份认证相关的扩展方法,用于生成 身份认证的 cookie 以及用户登录。 authentication 的scheme 必须符合cookie handler中配置的值。
当用户登录之后,至少要生成 sub 以及 name 的 claim。 IdentityServer 同样也在 HttpContext中 提供几个 SignInAsync 扩展方法,使得使用起来更方便。
也可以生成 idp claim(identity provider 的 name),amr claim(authentication method使用),和/或 auth_time claim(用户authentication的时间)。如果不提供这些值, identityServer 会提供默认的值。
IdentityServer4 sign-in的更多相关文章
- .netcore2.1 使用IdentityServer4 生成Token验证
每个新技术权限验证都有一套机制,之前项目WebApi接口权限验证用的是Owin做为权限验证,而.netcore权限限制使用的是IdentityServer4,采用JWT的方法验证token. 首先使用 ...
- IdentityServer4 手动验签及日志记录
IdentityServer4的基础知识和使用方式网上有很多特别优秀的文章,如果有对其不了解的推荐阅读一下下面的两篇文章 http://www.ruanyifeng.com/blog/2014/05/ ...
- IdentityServer4 使用OpenID Connect添加用户身份验证
使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- The certificate used to sign ***has either expired or has been revoked. An updated certificate is required to sign and install the application
真机测试的时候弹出这样的提示:The certificate used to sign ***has either expired or has been revoked. An updated ce ...
- Xocde一次版本升级遇到的问题 (Code Sign Error)
因为Xcode对ios版本的支持问题,我对XCode进行了一次升级,导致原来还好的项目代码出现了编译时错误. Code Sign Error failed with exit code 1 问题就在于 ...
- 【转】App开放接口api安全性—Token签名sign的设计与实现
前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...
- iOS 证书Bug The identity used to sign the executable is no longer valid 解决方案
现象:The identity used to sign the executable is no longer valid Please verify that your device’s cloc ...
- 微信连WiFi expired timestamp 和sign错误小坑解决
0.微信连WiFi需要时间戳毫秒,但是PHP本身没有自带这个函数.但是相对来说,Java和js获取毫秒时间戳就比较方便. 既然PHP没有,那么就自己写一个获取毫秒时间戳的函数,否则就会失败.实在懒得写 ...
- 真机测试及布署Code Sign error问题总结
Code Sign error: Certificate identity 'iPhone Developer: idf (XR9HN3TD7E)' appears more than once in ...
随机推荐
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十七章:拾取
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十七章:拾取 代码工程地址: https://github.com/ ...
- Run As none applicable
详解如何在myeclipse中运行JSP,Run As none applicable(图) 内容提要:对JSP的访问都是用浏览器进行的,没有Run on Server这个选项. 在MyEclip ...
- Atcoder Tenka1 Programmer Contest D: IntegerotS 【思维题,位运算】
http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_d 给定N,K和A1...AN,B1...BN,选取若干个Ai使它们的或运算值小于等于K ...
- UVa 10285【搜索】
UVa 10285 哇,竟然没超时!看网上有人说是记忆化搜索,其实不太懂是啥...感觉我写的就是毫无优化的dfs暴力....... 建立一个坐标方向结构体数组,每个节点dfs()往下搜就好了. #in ...
- 前端基础☞html
HTML 初识 web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s ...
- java对象转化为json字符串并传到前台
package cc.util; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import ...
- 14.libgdx的一些坑记录(持续更新)
1. internal的文件路径 无法用list获取目录下文件 2.动态打包散图无法放入资源管理器,只能在资源加载器打包后的散图再合成打包,但都不如提前打包 3.资源加载器读入以texture ...
- corn表达式——用于设置定时任务[转载]
原文地址https://blog.csdn.net/xiaopihai86/article/details/50756306 http://www.cronmaker.com/ cron表达式验证网 ...
- UIImageView xib里面拉伸图片技巧
拉伸图片的时候代码里和xib里面的图片名字去掉@2x,但是原始图片文件得要xxx@2x.png The X and Y values seem to be the positions for the ...
- Project Euler Problem 23-Non-abundant sums
直接暴力搞就行,优化的地方应该还是计算因子和那里,优化方法在这里:http://www.cnblogs.com/guoyongheng/p/7780345.html 这题真坑,能被写成两个相同盈数之和 ...