原文地址

Sign-in

IdentityServer 代表 user 分配token之前,user必须登录IdentityServer

Cookie authentication

使用 cookie 进行身份认证的方式,是通过 Asp.Net Core 的 cookie authentication handler 实现的。

IdentityServer 注册了两个 cockie handler(一个用来身份认证中的session,另外用于一个temporary external cookie)。两者是默认配置使用的,可以通过 IdentityServerConstants类获得他们的名称(DefaultCookieAuthenticationSchemeExternalCookieAuthenticationScheme)

以上的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 内部会调用 AddAuthenticationAddCookie方法,并使用 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的更多相关文章

  1. .netcore2.1 使用IdentityServer4 生成Token验证

    每个新技术权限验证都有一套机制,之前项目WebApi接口权限验证用的是Owin做为权限验证,而.netcore权限限制使用的是IdentityServer4,采用JWT的方法验证token. 首先使用 ...

  2. IdentityServer4 手动验签及日志记录

    IdentityServer4的基础知识和使用方式网上有很多特别优秀的文章,如果有对其不了解的推荐阅读一下下面的两篇文章 http://www.ruanyifeng.com/blog/2014/05/ ...

  3. IdentityServer4 使用OpenID Connect添加用户身份验证

    使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...

  4. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  5. 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 ...

  6. Xocde一次版本升级遇到的问题 (Code Sign Error)

    因为Xcode对ios版本的支持问题,我对XCode进行了一次升级,导致原来还好的项目代码出现了编译时错误. Code Sign Error failed with exit code 1 问题就在于 ...

  7. 【转】App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  8. 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 ...

  9. 微信连WiFi expired timestamp 和sign错误小坑解决

    0.微信连WiFi需要时间戳毫秒,但是PHP本身没有自带这个函数.但是相对来说,Java和js获取毫秒时间戳就比较方便. 既然PHP没有,那么就自己写一个获取毫秒时间戳的函数,否则就会失败.实在懒得写 ...

  10. 真机测试及布署Code Sign error问题总结

    Code Sign error: Certificate identity 'iPhone Developer: idf (XR9HN3TD7E)' appears more than once in ...

随机推荐

  1. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十七章:拾取

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十七章:拾取 代码工程地址: https://github.com/ ...

  2. Run As none applicable

    详解如何在myeclipse中运行JSP,Run As none applicable(图) 内容提要:对JSP的访问都是用浏览器进行的,没有Run on Server这个选项.   在MyEclip ...

  3. Atcoder Tenka1 Programmer Contest D: IntegerotS 【思维题,位运算】

    http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_d 给定N,K和A1...AN,B1...BN,选取若干个Ai使它们的或运算值小于等于K ...

  4. UVa 10285【搜索】

    UVa 10285 哇,竟然没超时!看网上有人说是记忆化搜索,其实不太懂是啥...感觉我写的就是毫无优化的dfs暴力....... 建立一个坐标方向结构体数组,每个节点dfs()往下搜就好了. #in ...

  5. 前端基础☞html

    HTML 初识 web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s ...

  6. java对象转化为json字符串并传到前台

    package cc.util; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import ...

  7. 14.libgdx的一些坑记录(持续更新)

    1. internal的文件路径 无法用list获取目录下文件     2.动态打包散图无法放入资源管理器,只能在资源加载器打包后的散图再合成打包,但都不如提前打包 3.资源加载器读入以texture ...

  8. corn表达式——用于设置定时任务[转载]

    原文地址https://blog.csdn.net/xiaopihai86/article/details/50756306 http://www.cronmaker.com/  cron表达式验证网 ...

  9. UIImageView xib里面拉伸图片技巧

    拉伸图片的时候代码里和xib里面的图片名字去掉@2x,但是原始图片文件得要xxx@2x.png The X and Y values seem to be the positions for the ...

  10. Project Euler Problem 23-Non-abundant sums

    直接暴力搞就行,优化的地方应该还是计算因子和那里,优化方法在这里:http://www.cnblogs.com/guoyongheng/p/7780345.html 这题真坑,能被写成两个相同盈数之和 ...