OIDC 是基于OAuth2和OpenID整合的新身份认证授权标准协议,且完全兼容 OAuth。Access Token 来解决授权第三方客户端访问受保护资源的问题,OIDC 在这个基础上提供了ID Token 来解决第三方客户端标识用户身份认证的问题。开源IDaaS方舟一账通ArkID系统内置OIDC认证插件极速安装、简单配置、马上可用,降低实施成本,提升应用集成效率。
添加OIDC应用
01 打开应用列表
02 点击创建,填写表单
点击确认后,对话框关闭,可以看到你创建的应用。
03 点击协议配置
04 填写配置
应用类型选择为OIDC,填写参数,创建完毕
05 再次点击协议配置
即可查看该协议所有相关的参数。
使用OIDC应用
1.明白页面字段含义
英文参数名称 | 对应页面字段 |
---|---|
redirect url | 回调地址 |
client_id | 客户端id |
client_token | 客户端秘钥 |
authorize url | 授权url |
get token url | 获取access_token地址 |
userinfo url | 用户信息地址 |
logout url | 退出登录地址 |
请求地址: | authorize url |
2.获取Authorization Code 请求方式: GET(重定向) 请求参数:
英文参数名称 | 对应页面字段 | 示例 示例 |
---|---|---|
client_id | client_id | |
redirect_uri | redirect url | |
response_type | 填入code | code |
scope | 可选 ( openid userinfo) | 如果传递openid,获取token会多一个id_token |
请求示例: http://authorize url/?client_id=xxxxx&redirect_uri=xxxxx&response_type=code&scope=userinfo
返回参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
code | 授权码 |
返回示例: http://redirect_uri?code=XEV8esOvaVk9wyAuiNXpb3Nuwn5av9&token=cd34840ffc804b894ede31bc21b176ef559e137f
3.获取Access Token
请求地址: get token url
请求方式: POST
请求头参数:
英文参数名称 | 参数说明 | 示例 |
---|---|---|
Authorization | token格式为 client_id:client_secret 使用base64编码 | Basic Token |
Content-Type | 填入multipart/form-data |
请求参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
code | 授权码 | |
grant_type | 填入authorization_code |
请求示例:
返回参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
access_token | 令牌 | |
expires_in | 过期时间 | |
token_type | Bearer | |
scope | userinfo openid | |
refresh_token | 用于更新令牌的令牌 |
返回示例:
{"access_token": "cFcWq78HH9MKVQOFJgGPl6RFtESAc2",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "userinfo",
"refresh_token": "oRHcgoGYsL5h1UimT4rWcg93lcTyjN"}
4.获取用户信息
请求地址: userinfo url
请求方式: GET
请求头参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
Authorization | Bearer access_token | Bearer cFcWq78HH9MKVQOFJgGPl6RFtESAc2 |
返回参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
id | 用户id | |
name | 用户名称 | |
sub | 用户id | |
sub_id | 用户id | |
preferred_username | 用户名 | |
groups | 用户分组 | |
tenant_id | 租户id | |
tenant_slug | 租户slug |
返回示例:
{ "id": "faf5aae6-3cdf-4595-8b4a-3a06b31117c8", "name": "admin", "sub": "faf5aae6-3cdf-4595-8b4a-3a06b31117c8", "sub_id": "faf5aae6-3cdf-4595-8b4a-3a06b31117c8", "preferred_username": "admin", "groups": [ ], "tenant_id": "4da114ce-e115-44a0-823b-d372114425d0", "tenant_slug": ""}
5.刷新token
这一步是可选的如果颁发的令牌过了有效期,可以使用这个接口更换新的令牌
请求地址: get token url
请求方式: POST
请求头参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
Authorization | 这个token由client_id和client_secret生成 | Basic Token示例 |
Content-Type | 填入multipart/form-data |
请求参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
refresh_token | 更新令牌 | |
grant_type | 填入refresh_token |
请求示例:
返回参数
参数名称 | 参数说明 | 示例 |
---|---|---|
access_token | 令牌 | |
expires_in | 过期时间 | |
token_type | Bearer | |
scope | userinfo openid | |
refresh_token | 用于更新令牌的令牌 |
返回示例
{ "access_token": "51s34LPxhhKlUTP5r5mHevGW7ussXC", "expires_in": 36000, "token_type": "Bearer", "scope": "userinfo",
"refresh_token": "68trmzGvLmmbjACnHFGgzoCl5LBOrJ"}
6.退出oidc
-
这一步是可选的,可以退出用户登录,并跳转到指定地址
-
请求地址: logout url
-
请求方式: GET
参数名称 | 参数说明 | 示例 |
---|---|---|
id_token_hint | id_token | |
post_logout_redirect_uri | 退出登录后跳转的地址(可选) |
返回参数:
参数名称 | 参数说明 | 示例 |
---|---|---|
error_code | 错误码 | |
error_msg | 错误信息 |
返回示例
{"error_code":0,
"error_msg":"logout success"}
ArkID方舟一账通
一款插件化、多租户、云原生的开源统一身份认证授权管理解决方案/身份云管理平台,采用AGPL-3.0 开源协议;支持多种标准协议(LDAP, OAuth2, SAML, OpenID),细粒度权限控制,完整的WEB管理功能,钉钉、企业微信集成等。ArkID 既可以作为企业终端客户资产统一管理 CIAM,可作为企业内部雇员、外部伙伴统一身份管理平台 EIAM;助企业构建标准化的用户身份体系。如果希望快速的了解系统的基本使用,可以访问官方IDaaS注册账号后创建自己的租户,即可使用系统的大部分功能。如果希望体验超级管理员,安装配置插件等,推荐使用私有化部署的方式。