Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
K ketanyun-sdk
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • 科探开源
  • ketanyun-sdk
  • Wiki
  • OAuth 2.0 OIDC 客户端集成文档

Last edited by wl Dec 18, 2023
Page history
This is an old version of this page. You can view the most recent version or browse the history.

OAuth 2.0 OIDC 客户端集成文档

对接说明
OIDC
[认证授权] OIDC(OpenId Connect)
  • OIDC是OpenID Connect的简称。它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。
  • 参考资料:
  • http://openid.net/connect/
  • http://openid.net/connect/faq/
  • http://openid.net/developers/certified/
  • JWT : https://tools.ietf.org/html/rfc7519
  • https://jwt.io
认证过程:
  • 基于Authorization Code的认证请求 详见: Authorization Endpoint

  • 获取ID Token

使用上一步获得的code来请求Token EndPoint,这一步同OAuth2,详见: Token Endpoint

Token EndPoint会返回响应的Token,其中除了OAuth2规定的部分数据外,还会附加一个id_token的字段(见 ID Token)。例如(解密见:https://jwt.io ):

{ "access_token": "7d7ffdf1dd626ddc042f96b29ba8bf64", "refresh_token": "9844af4a27870037fbe9dd6c34407d1e", "scope": "4", "id_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ6cmpZSUFzSE5mN3VuZkVGbVN0aCIsImlzcyI6Imh0dHA6Ly93LnVucG93ZXIub3JnL3NzbyIsInN1YiI6IkEyZDRqWFk2ZEZ0eGF3c2JzQWN5IiwiZXhwIjoxNTM1NDc1MTg2LCJpYXQiOjE1MzU0NzUwNjYsIm5vbmNlIjoiYzhiZDkzYWQtMzkzMC00ZWNlLWE0ZjQtNzNiYWM0ZmM4YmFhIiwibmFtZSI6IkFsaWNlIiwiYWNjb3VudCI6IkFsaWNlIiwidGVuYW50IjoiODQyOTZhMWUtNmEzNS0xMWU4LWJlYjEtODRhNmM4NGFlMjQ2IiwiaWQiOiI4NDNkODE0NC02YTM1LTExZTgtYmViMS04NGE2Yzg0YWUyNDYifQ.jJmv6oLmB8-y18hy2xT5IcdFWTAytD20jIX3JEU38pA",
"token_type": "Bearer", "expires_in": 2000000 }

ID Token
  • ID Token是一个安全令牌,包含用户信息(由一组Cliams构成以及其他辅助的Cliams)的JWT格式的数据结构。
  • sub (Subject Identifier)
    • 租户内的唯一id,一般称为openid,不会为空
    • 以下两种情况例外,会返回第三方提供的账号:
      • 本地数据库虽然有账号,但通过配置项 IGNORE_ACCOUNT_NOT_FOUND 配置了"不验证本地账号"
      • 本地数据库无账号
  • 科探扩展字段说明:
字段名 类型 含义
account string 推荐优先使用的用户id,用于openid不统一的情况。可为空,为空时请使用sub
tenant string 用户所属的租户的标识,格式上一般是域名(但不保障)
  • 一个ID Token的样例:
{
    "aud": "zrjYIAsHNf7unfEFmSth", 
    "iss": "http://w.unpower.org/sso", 
    "sub": "A2d4jXY6dFtxawsbsAcy", 
    "exp": 1535475186, 
    "iat": 1535475066, 
    "nonce": "c8bd93ad-3930-4ece-a4f4-73bac4fc8baa", 
    "name": "Alice", 
    "account": "Alice", 
    "tenant": "example.com", 
    "id": "843d8144-6a35-11e8-beb1-84a6c84ae246"
}
Clone repository
  • CAS 客户端集成文档
  • OAuth 2.0 OIDC 客户端集成文档
  • OAuth 2.0 集成文档
  • Home
  • 应用接入概述
  • 认证客户端集成文档