• 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。用户在会话期间通过浏览器登录的所有应用程序都可以参与注销。

  • 相关阅读:
    设计模式
    jQuery回到顶部插件jQuery GoUp
    CentOS7+Tomcat 生产系统部署
    iOS 时间戳转换为时间
    iOS开发系列--Swift 3.0
    IOS
    iOS之宏定义#define
    #define和预编译指令
    iOS宏定义的使用与规范
    ios十进制、十六进制字符串,byte,data等之间的转换
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/14023963.html
Copyright © 2020-2023  润新知