SSO 設定の新規作成¶
POST /api/v1/sso/saml_create
概要¶
SSO を有効化します。
Body リクエストパラメータ¶
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| type | string | Y | タイプ 例: 空の値を許可: False 選択可能な値: ['saml', 'oidc'] |
| idpData | string | XML ドキュメントの内容 (saml タイプの場合は必須) 例: 空の値を許可: False |
|
| config | json | アクセス設定テーブル (oidc タイプの場合は必須。clientSecret はバックエンドに渡す前に base64 エンコードする必要があります) 例: 空の値を許可: False |
|
| emailDomains | array | Y | メールドメイン 例: ['guance.com'] |
| idpName | string | Y | プロバイダー 例: デフォルトプロバイダー 最大長: 64 $matchRegExp: [a-zA-Z_一-龥-]* |
| role | string | Y | ロール UUID。general、readOnly、およびカスタムロールをサポートします。 空の値を許可: False 空の文字列を許可: False |
| remark | string | 備考 空の値を許可: False 空の文字列を許可: True |
|
| tokenHoldTime | integer | 無操作状態のセッション保持時間 (秒単位、デフォルト 7 日間 = 604800 秒) 例: 604800 空の値を許可: False $minValue: 60 $maxValue: 604800 |
|
| tokenMaxValidDuration | integer | ログインセッションの最大保持時間 (秒単位、デフォルト 30 日間 = 2592000 秒) 例: 2592000 空の値を許可: False $minValue: 60 $maxValue: 2592000 |
|
| needNotify | boolean | SSO 設定変更のメール通知を送信するかどうか。デフォルトは true。false を指定するとメール通知のみ抑制され、設定変更や監査記録には影響しません。 例: True 空の値を許可: False |
パラメータ補足説明¶
OIDC タイプの config 設定説明
type='oidc' の場合、config フィールドが有効になります。そのデータ構造は以下の通りです。
1. config フィールドの説明
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| modeType | enum | easy | 設定ファイルの編集モード。選択可能な値は以下の通りです。 easy:シンプルな UI 編集モード。このモードでは、ユーザーは OIDC インタラクションプロトコルに必須の基本データのみを設定すればよく、その他のデータはデフォルト値が使用されます。 expert:エキスパート設定ファイルモード。ユーザーは OIDC 設定ファイルをアップロードする必要があります。このモードでは、OIDC プロトコル内の各種リクエスト情報をカスタマイズできます。 |
|
| wellKnowURL | string | Y | OIDC プロトコルの標準サービスディスカバリー URL。 例: Microsoft AAD |
|
| clientId | string | Y | 「認証サービス」が「Guance」用に作成したクライアント ID | |
| clientSecret | string | Y | 「認証サービス」が「Guance」用に作成したクライアントに対応するシークレット | |
| sslVerify | boolean | サービスディスカバリー設定情報のリクエスト時に SSL 認証を強制するかどうか。 デフォルトでは、wellKnowURL パラメータ値のプロトコルアドレスに基づいて決定されます。https の場合はデフォルトで true、それ以外の場合はデフォルトで false になります。 |
||
| grantType | string | Y | authorization_code | 「認証サービス」が「Guance」用に作成したクライアント ID |
| scope | array | Y | ["openid", "email"] | アクセス可能なデータ権限。 必須値: openid その他の選択可能な値: 例: profile, email この値は、「認証サービス」が「Guance」に割り当てた scope に依存します。 |
| authSet | dict | この設定は、OIDC プロトコルにおける認証リクエスト URL の取得に使用されます。 プロトコルソース |
||
| getTokenSet | dict | この設定は、OIDC プロトコルにおける code を token と交換するリクエストに使用されます。 プロトコルソース |
||
| verifyTokenSet | dict | id_token の検証設定。 プロトコルソース, jwks_urls データ構造プロトコルソース |
||
| getUserInfoSet | dict | この設定は、OIDC プロトコルにおけるユーザー情報の取得リクエストに使用されます。 プロトコルソース |
||
| claimMapping | dict | ユーザー情報 / id_token 内のフィールドマッピング設定。「Guance」がこのマッピング設定に基づいてアカウント内の対応情報を取得するために使用されます。 |
2. config.authSet 設定の内部構造パラメータ説明
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| url | string | 認証リクエスト URL。 指定されていない場合、デフォルトで wellKnowURL が指す設定の authorization_endpoint 値が使用されます。 |
||
| verify | boolean | このリクエストに対して SSL 検証を有効にするかどうか。指定されていない場合、URL が https プロトコルを使用するときはデフォルトで有効、それ以外の場合は無効になります。 | ||
| paramMapping | dict | リクエスト内のパラメータフィールドのマッピング。通常、非標準の OIDC クライアントが独自の認証フローに合わせて関連パラメータフィールドを調整するために使用されます。詳細は以下の説明を参照してください。 |
3. config.getTokenSet 設定の内部構造パラメータ説明
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| url | string | code を token と交換するためのリクエスト URL。 指定されていない場合、デフォルトで 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 設定の内部構造パラメータ説明
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| url | string | code を token と交換するためのリクエスト URL。 指定されていない場合、デフォルトで wellKnowURL が指す設定の token_endpoint 値が使用されます。 |
||
| verify | boolean | このリクエストに対して SSL 検証を有効にするかどうか。指定されていない場合、URL が https プロトコルを使用するときはデフォルトで有効、それ以外の場合は無効になります。 | ||
| keys | array | URL が指す JWT アルゴリズムデータ情報。 プロトコルソース, jwks_urls データ構造プロトコルソース |
5. config.getUserInfoSet 設定の内部構造パラメータ説明
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| source | enum | id_token | ユーザー情報の取得元。選択可能な値は以下の通りです。 id_token: id_token からデータを解析して取得します。 origin: 「認証サービス」のインターフェースを呼び出してユーザー情報を取得します。 |
|
| url | string | ユーザー情報を取得するためのリクエスト URL。 指定されていない場合、デフォルトで 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 設定の内部構造パラメータ説明
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| string | Y | ユーザーのメールアドレスを表すフィールド。 | ||
| username | string | Y | preferred_username | ユーザーのユーザー名を表すフィールド。 |
| mobile | string | ユーザーの電話番号。 |
7. getTokenSet、getUserInfoSet 設定における paramMapping パラメータの内部構造説明
注意:paramMapping が存在する場合、カスタムリクエストパラメータフローが直接使用されます。
| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| 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"
}