IdentityServer4笔记

IdentityServer4

IdentityServer4是为ASP.NET CORE量身定制的实现了OpenId Connect和OAuth2.0协议的认证授权中间件。
OpenId Connect :
OpenID Connect 1.0 是基于OAuth 2.0协议之上的简单身份层,它允许客户端根据授权服务器的认证结果最终确认终端用户的身份,以及获取基本的用户信息;它是可扩展的协议,允许你使用某些可选功能,如身份数据加密、OpenID提供商发现、会话管理等。

端点

IdentityServer服务器提供的对外接口

发现端点:

发现端点可用于检索有关您的IdentityServer的元数据-它返回信息,例如发行者名称,密钥材料,支持的范围等。
通过/.well-known/openid-configuration访问发现端点

授权端点(/connect/authorize)

授权端点可用于通过URL请求令牌(AccessToken)或授权码(AuthorizationCode)。此过程通常涉及对用户的身份验证和可选同意
当使用授权码模式时,授权端点返回AuthorizationCode;
当使用简化模式时,授权端点返回AccessToken;
请求参数:
client_id:客户端标识符(必须)
scope:权限(必须)
redirect_url:返回参数的跳转URL(必须)
response_type:id_token-请求身份令牌,仅允许身份访问;token-请求访问令牌,仅允许资源访问;code-请求授权码
response_mode:form_post 发送令牌响应作为表单发布,而不是URL编码的重定向(可选)
state:这用于客户端和提供者之间的往返状态,将请求和响应以及CSRF /重放保护相关联。(推荐的)
nonce:身份令牌中的现时值,这是为了重播保护,通过隐式授予的身份令牌必需
code_challenge:发送PKCE的代码挑战
ui_locales:提供有关登录UI所需显示语言的提示
max_age:如果用户的登录会话超过数值(以秒为单位),则将显示登录界面
acr_values:允许传递与身份验证有关的信息,如下:(tenant:name_of_tenant可用于将租户名称传递给登录用户界面)
request:
code_challenge_method:
login_hint:
prompt:
例:

GET /connect/authorize?
    client_id=client1&
    scope=openid email api1&
    response_type=id_token token&
    redirect_uri=https://myapp/callback&
    state=abc&
    nonce=xyz

令牌端点(/connect/token)

令牌端点可用于应用后端请求令牌
请求参数:
client_id:客户端标识符(必须)
client_secret:客户端密码(可选)
grant_type:授权类型(authorization_code,client_credentials,password,refresh_token,urn:ietf:params:oauth:grant-type:device_code或自定义)
scope:权限(可选)
redirect_uri:authorization_code授权模式下必须??()
code:authorization_code授权模式下必须
username:用户名,password授权模式下必须
password:密码,password授权模式下必须
refresh_token:refresh_token授权模式下必须
device_code:device_code授权模式下必须
Example:

POST /connect/token
CONTENT-TYPE application/x-www-form-urlencoded
    client_id=client1&
    client_secret=secret&
    grant_type=authorization_code&
    code=hdh922&
    redirect_uri=https://myapp.com/callback

UserInfo端点:(/connect/userinfo)
UserInfo端点可用于检索有关用户的身份信息
呼叫者需要发送代表用户的有效访问令牌。根据授予的范围,UserInfo端点将返回映射的声明(至少需要openid范围)。

GET /connect/userinfo
Authorization: Bearer <access_token>
HTTP/1.1 200 OK
Content-Type: application/json

{
    "sub": "248289761001",
    "name": "Bob Smith",
    "given_name": "Bob",
    "family_name": "Smith",
    "role": [
        "user",
        "admin"
    ]
}

设备授权端点?

自省端点(Introspection Endpoint)

它可以用来验证参考令牌,自省端点需要身份验证-由于自省端点的客户端是API,因此您可以在上配置密钥ApiResource

吊销端点

该端点允许撤销访问令牌(仅参考令牌)并刷新令牌
请求参数:
token:要撤销的token(必须)
token_type_hint:access_token或refresh_token(可选)

POST /connect/revocation HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW

token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token

结束会话端点(End Session Endpoint)?

结束会话端点可用于触发单点注销(/connect/endsession)
要使用结束会话终结点,客户端应用程序会将用户的浏览器重定向到结束会话URL。用户在会话期间通过浏览器登录的所有应用程序都可以参与注销。

原文地址:https://www.cnblogs.com/fanfan-90/p/14023963.html