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

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": "WqrO6vGnAKfgbfYtNNNr",
  "iss": "https://server.example.com/sso/oauth2",
  "jti": "80da7179c66dcc324cf8523175e8a8b8",
  "sub": "wQWhfqaPPlDWDSnOLTwf",
  "exp": 1702879445,
  "iat": 1702879325,
  "sid": "5f38e1419c3313b9a27d0405c0ec2c54",
  "principal": "USER_CODE",
  "tenant": "example.com",
  "external":false,
  "openId": "wQWhfqaPPlDWDSnOLTwf",
  "loginName": "Alice",
  "name": "张三",
  "userType": "ITAdmin",
  "userName": "Alice",
  "account": "Alice",
  "email": "alice@example.com.cn",
  "userCode": "Alice",
  "deptCode": "Dept"
}
Clone repository
  • CAS 客户端集成文档
  • OAuth 2.0 OIDC 客户端集成文档
  • OAuth 2.0 集成文档
  • Home
  • 应用接入概述
  • 认证客户端集成文档