跳转至

添加 SAML SSO 登录配置



POST /api/v1/sso/saml_create

概述

启用一个SAML

Body 请求参数

参数名 类型 必选 说明
type string Y 类型
例子:
允许为空: False
可选值: ['saml', 'oidc']
idpData string Y xml文档内容(saml 类型必填)
例子:
允许为空: False
config json 访问配置表(oidc 类型必填)
例子:
允许为空: False
emailDomains array Y 邮箱域名
例子: ['jiagouyun.com', 'guance.com']
idpName string Y 供应商
例子: 默认供应商
最大长度: 64
$matchRegExp: [a-zA-Z_一-龥-]*
role string Y 角色
允许为空: False
可选值: ['general', 'readOnly']
remark string 备注
允许为空: False
允许为空字符串: True
tokenHoldTime integer token 保持时长, 秒级时间戳,默认值 14400
允许为空: False
允许为空字符串: False
$minValue: 1800
$maxValue: 86400
tokenMaxValidDuration integer token 最长的有效期, 秒级时间戳, 默认值 604800
允许为空: False
允许为空字符串: False
$minValue: 86400
$maxValue: 604800

参数补充说明

OIDC 类型 config 配置说明


当 type='oidc' 时, config 字段生效。其数据结构信息如下
1.config 字段说明

参数名 type 必选 默认值 说明
modeType enum easy 配置文件编辑模式。可选值如下:
easy:简单UI编辑模式。此模式下,用户仅须配置 OIDC 交互协议中必须的基础数据即可,其他数据均为默认值.
expert:专家配置文件模式,要求用户上传 OIDC 配置文件。该模式支持用户自定义 OIDC 协议中的各种请求信息
wellKnowURL string Y OIDC 协议中的标准服务发现地址.
例如微软 AAD
clientId string Y 「认证服务」为「观测云」创建的客户端ID
clientSecret string Y 「认证服务」为「观测云」创建的客户端对应的密钥
sslVerify boolean 服务发现配置信息请求时是否强制进行 ssl 认证;
默认根据 wellKnowURL 参数值的协议地址进行区分,如果是 https, 则默认为 true; 否则默认为 false
grantType string Y authorization_code 「认证服务」为「观测云」创建的客户端ID
scope array Y ["openid", "email"] 可访问的数据权限
其中必选值为:openid
其他可选值, 例如 profile, email
该值取决于「认证服务」为「观测云」分配的 scop
authSet dict 该配置服务于 OIDC 协议中的获取认证请求地址。
协议来源
getTokenSet dict 该配置服务于 OIDC 协议中的 code 换 token 请求.
协议来源
verifyTokenSet dict id_token 的验证配置.
协议来源, jwks_urls 数据结构协议来源
getUserInfoSet dict 该配置服务于 OIDC 协议中的获取用户信息请求.
协议来源
claimMapping dict 用户信息/id_token 中的字段映射配置。用于「观测云」根据该映射配置获取账号中对应的信息


2. config.authSet 配置内部结构参数说明

参数名 type 必选 默认值 说明
url string 认证请求地址。
如果未提供,则默认取 wellKnowURL 指向配置中的 authorization_endpoint 值
verify boolean 针对该请求是否需要开启 ssl 验证;未指定的情况下,url 使用 https 协议时,默认开启,否则关闭。
paramMapping dict 请求中参数字段的映射,一般用于非标准OIDC客户根据自己的认证流程调整相关参数字段。详情下见下文中的说明


3. config.getTokenSet 配置内部结构参数说明

参数名 type 必选 默认值 说明
url string code换取token的请求地址。
如果未提供,则默认取 wellKnowURL 指向配置中的 token_endpoint 值
method enum post 请求方法, 可选值:post, get
verify boolean 针对该请求是否需要开启 ssl 验证;未指定的情况下,url 使用 https 协议时,默认开启,否则关闭。
authMethod enum basic 签名数据位置及方法。可选值如下
client_secret_basic 或者 basic: 认证信息位于请求头中的 Authorization 中,为 basic 认证
client_secret_post: client_id 和 client_secret 位于 body 中
none: client_id 和 client_secret 位于 query 中
paramMapping dict 请求中参数字段的映射,一般用于非标准OIDC客户根据自己的认证流程调整相关参数字段。详情下见下文中的说明


4. config.verifyTokenSet 配置内部结构参数说明

参数名 type 必选 默认值 说明
url string code换取token的请求地址。
如果未提供,则默认取 wellKnowURL 指向配置中的 token_endpoint 值
verify boolean 针对该请求是否需要开启 ssl 验证;未指定的情况下,url 使用 https 协议时,默认开启,否则关闭。
keys array url 指向的 JWT 算法数据信息
协议来源, jwks_urls 数据结构协议来源


5. config.getUserInfoSet 配置内部结构参数说明

参数名 type 必选 默认值 说明
source enum id_token 获取用户信息的来源方式。可选值如下
id_token: 从 id_token 中解析数据得来;
origin: 调用「认证服务」接口获取用户信息
url string 获取用户信息的请求地址。
如果未提供,则默认取 wellKnowURL 指向配置中的 userinfo_endpoint 值.
source=origin 时该参数有效。
verify boolean 针对该请求是否需要开启 ssl 验证;未指定的情况下,url 使用 https 协议时,默认开启,否则关闭。
method enum post 请求方法, 可选值:post, get;
source=origin 时该参数有效
authMethod enum bearer 签名数据位置及方法。可选值如下:
bearer: HTTP Bearer认证
client_secret_basic 或者 basic: 认证信息位于请求头中的 Authorization 中,为 basic 认证
client_secret_post: client_id 和 client_secret 位于 body 中
none: client_id 和 client_secret 位于 query 中
paramMapping dict 请求中参数字段的映射,一般用于非标准OIDC客户根据自己的认证流程调整相关参数字段。详情下见下文中的说明


6. config.claimMapping 配置内部结构参数说明

参数名 type 必选 默认值 说明
email string Y email 代表用户的邮箱字段
username string Y preferred_username 代表用户的用户名字段
mobile string 用户的手机号


7. 针对 getTokenSet、getTokenSet、getUserInfoSet 配置中 paramMapping 参数内部结构说明 注意,当 paramMapping 存在时, 将直接走自定义请求参数流程。

参数名 type 必选 默认值 说明
client_id string $client_id 客户端ID, 与协议中的 client_id 对应
scope string $scope 数据范围。以空格分隔数据范围字符串;
注意,此处是请求参数中的 scope, 其与外部配置中的数据类型不同。外部配置中的 scope 作为默认配置存在,是数组类型;
而此处的 scope 作为请求参数存在,是字符串类型。
例如:“openid email profile”
code string $code 「认证服务」传递过来用于换取 token 的 code
state string $state 类似与 CSRF 的作用
redirect_uri string $redirect_uri 响应将被发送到的重定向URI。
response_type string $response_type 响应类型, 授权码流程的值为 code

请求例子

curl 'https://openapi.guance.com/api/v1/sso/saml_create' \
  -H 'DF-API-KEY: <DF-API-KEY>' \
  -H 'Content-Type: application/json;charset=UTF-8' \
  --data-raw '{"idpData":"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><md:EntityDescriptor entityID=\\\"http://www.okta.com/exk4snorvlVZsqus25d7\\\" xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\"><md:IDPSSODescriptor WantAuthnRequestsSigned=\\\"false\\\" protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"><md:KeyDescriptor use=\\\"signing\\\"><ds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"><ds:X509Data><ds:X509Certificate>MIIDqDCCApCgAwIBAgIGAXy+xOGoMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxFTATBgNVBAMMDGRldi0zODQzNjMzODEcMBoGCSqGSIb3DQEJ\nARYNaW5mb0Bva3RhLmNvbTAeFw0yMTEwMjYyMjQxMjZaFw0zMTEwMjYyMjQyMjZaMIGUMQswCQYD\nVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsG\nA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxFTATBgNVBAMMDGRldi0zODQzNjMzODEc\nMBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAKBt7aed/3A+gHtfmNSATeaaNo1LR/WPH9TIso3foT5dMXYRtlW57/YPNzBpii8+Gs/I6xL7\nkXzbRy9lnhpbBVTCLstWpuxYNr7zXuxICoSCW/b+5bYNkvKFmYd1dGkd0j7L8ZbHDKFzGkCS4a/D\nKUn6Ac/HlmML9GIOzPNyz514c6cAGd4zcpYiXFhlpzFLpElUOEedWVU4eZ48k91pPLf2guWpU/OD\nmKQisIOL5uqQqLsK1DXV+miSfB8Mm4jXSPLBE73mD7EfYidY1FQELqsrLshkXJGbhlkNnoEocCLH\nz9COzi9+jeecGvZGUw+l8hkxMsqH+0U3wM7ueVLMtgECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA\nUQrFTpRmneWUuok3L1CWgTeuwakErxB2NZtvpGkD5HrJE/eeyCEp81atOH6EU6mJamSLuFtJu5wl\nArV9c7lfFliArtg3+d0NM9mV/6E+RYn5ELDK44Qc3M1wkf4BhcQWNVUR4tiTIS3EeFVEdo1e/xqg\n2sqj7WE+6BMMae4mjmXzrQ57+a+WzWKjKQfIuVzdy2ss+8ZnOpiU+sntd1DwXKCl1jMlDYQi9NYU\nHKIqtVkLsv0ooOoXygw7t9PD8iLHBEzAsoAyON15oUIEw4mahstkOA14yERzQQyII3gilZeANebf\npkg8N9/m3HBhfHh65KpQTHh9MTU41Bcvf2KZRg==</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat><md:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\\\" Location=\\\"https://dev-38436338.okta.com/app/dev-38436338__5/exk4snorvlVZsqus25d7/sso/saml\\\"></md:SingleSignOnService><md:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://dev-38436338.okta.com/app/dev-38436338__5/exk4snorvlVZsqus25d7/sso/saml\\\"></md:SingleSignOnService></md:IDPSSODescriptor></md:EntityDescriptor>","emailDomains":["qq.com"],"role":"general","remark":"","tokenHoldTime":1800,"tokenMaxValidDuration":604800}' \
  --compressed \
  --insecure

响应

{
    "code": 200,
    "content": {
        "assertionURL": "http://testing-ft2x-auth.cloudcare.cn/saml/assertion/sso_xxxx32",
        "createAt": 1678020614,
        "creator": "acnt_xxxx32",
        "deleteAt": -1,
        "emails": [
            "qq.com"
        ],
        "entiryID": "http://testing-ft2x-auth.cloudcare.cn/saml/metadata.xml",
        "id": null,
        "idpMd5": "54a3b7441fba3bdb555ae854745f576f",
        "idpName": null,
        "isOpenSAMLMapping": 0,
        "loginURL": "http://testing-ft2x-auth.cloudcare.cn/saml/login/sso_xxxx32",
        "metadataURL": "http://testing-ft2x-auth.cloudcare.cn/saml/metadata/sso_xxxx32",
        "remark": "",
        "role": "general",
        "status": 0,
        "tokenHoldTime": 1800,
        "tokenMaxValidDuration": 604800,
        "type": "saml-1",
        "updateAt": 1678020614,
        "updator": "acnt_xxxx32",
        "uploadData": "<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><md:EntityDescriptor entityID=\\\"http://www.okta.com/exk4snorvlVZsqus25d7\\\" xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\"><md:IDPSSODescriptor WantAuthnRequestsSigned=\\\"false\\\" protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"><md:KeyDescriptor use=\\\"signing\\\"><ds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"><ds:X509Data><ds:X509Certificate>MIIDqDCCApCgAwIBAgIGAXy+xOGoMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxFTATBgNVBAMMDGRldi0zODQzNjMzODEcMBoGCSqGSIb3DQEJ\nARYNaW5mb0Bva3RhLmNvbTAeFw0yMTEwMjYyMjQxMjZaFw0zMTEwMjYyMjQyMjZaMIGUMQswCQYD\nVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsG\nA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxFTATBgNVBAMMDGRldi0zODQzNjMzODEc\nMBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAKBt7aed/3A+gHtfmNSATeaaNo1LR/WPH9TIso3foT5dMXYRtlW57/YPNzBpii8+Gs/I6xL7\nkXzbRy9lnhpbBVTCLstWpuxYNr7zXuxICoSCW/b+5bYNkvKFmYd1dGkd0j7L8ZbHDKFzGkCS4a/D\nKUn6Ac/HlmML9GIOzPNyz514c6cAGd4zcpYiXFhlpzFLpElUOEedWVU4eZ48k91pPLf2guWpU/OD\nmKQisIOL5uqQqLsK1DXV+miSfB8Mm4jXSPLBE73mD7EfYidY1FQELqsrLshkXJGbhlkNnoEocCLH\nz9COzi9+jeecGvZGUw+l8hkxMsqH+0U3wM7ueVLMtgECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA\nUQrFTpRmneWUuok3L1CWgTeuwakErxB2NZtvpGkD5HrJE/eeyCEp81atOH6EU6mJamSLuFtJu5wl\nArV9c7lfFliArtg3+d0NM9mV/6E+RYn5ELDK44Qc3M1wkf4BhcQWNVUR4tiTIS3EeFVEdo1e/xqg\n2sqj7WE+6BMMae4mjmXzrQ57+a+WzWKjKQfIuVzdy2ss+8ZnOpiU+sntd1DwXKCl1jMlDYQi9NYU\nHKIqtVkLsv0ooOoXygw7t9PD8iLHBEzAsoAyON15oUIEw4mahstkOA14yERzQQyII3gilZeANebf\npkg8N9/m3HBhfHh65KpQTHh9MTU41Bcvf2KZRg==</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat><md:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\\\" Location=\\\"https://dev-38436338.okta.com/app/dev-38436338__5/exk4snorvlVZsqus25d7/sso/saml\\\"></md:SingleSignOnService><md:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://dev-38436338.okta.com/app/dev-38436338__5/exk4snorvlVZsqus25d7/sso/saml\\\"></md:SingleSignOnService></md:IDPSSODescriptor></md:EntityDescriptor>",
        "uuid": "sso_xxxx32",
        "workspaceUUID": "wksp_xxxx32"
    },
    "errorCode": "",
    "message": "",
    "success": true,
    "traceId": "12755949048553864357"
} 

文档评价

文档内容是否对您有帮助? ×