OAuth 2.0
1. 設定ファイルの作成
デフォルトのデータディレクトリは
/data/mingdao/script/volume/sso/sso.jsonです。内容は以下のとおりです。
注意:マウント後に 404 エラーが発生する場合、内容を json.cn で JSON フォーマットが正しいか確認してください。
{
"mode": "common-oauth2",
"name": "oauth2",
"oauth2": {
"oauth2Url": "",
"clientId": "",
"clientSecret": "",
"idParamName": "client_id",
"secretParamName": "client_secret",
"accessTokenParamName": "access_token",
"redirectUri": "{HAP}/orgsso/oauth2",
"authorizePath": "/authorize",
"tokenPath": "/access_token",
"userInfoUrl": "",
"params": {
"UserId": "uid",
"Name": "name",
"Email": "email",
"Mobile": "mobilePhone",
"Positions": "positions",
"Departments":"departments"
},
"autoRegister": true,
"projectId": ""
}
}
一部パラメーターと説明
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| oauth2.oauth2Url | String | 必須 | oauth2認証サーバーのアドレス(例:http://192.168.10.80/) |
| oauth2.clientId | String | 必須 | アプリケーションに払い出されるClient Id |
| oauth2.clientSecret | String | 必須 | アプリケーションに払い出されるClient Secret |
| oauth2.idParamName | String | 必須 | client_id とマッピングするパラメーター名。authorizePath および tokenPath のリクエストに応じて設定 |
| oauth2.secretParamName | String | 必須 | client_secret とマッピングするパラメーター名。authorizePath および tokenPath のリクエストに応じて設定 |
| oauth2.accessTokenParamName | String | 任意 | access_tokenとマッピングされるパラメーター名。tokenPathの返却値により設定。デフォルトはaccessToken |
| oauth2.redirectUri | String | 必須 | コールバックURL。通常は {HAP}/orgsso/oauth2 に設定 |
| oauth2.authorizePath | String | 必須 | 認可用パス。oauth2Url/authorizePathの形式で連結(例:/authorize) |
| oauth2.tokenPath | String | 必須 | アクセストークン取得用パス。oauth2Url/tokenPathの形式で連結(例:/access_token) |
| oauth2.userInfoUrl | String | 必須 | ユーザー情報取得用APIの完全なURL。リクエストURLにはトークンパラメータが自動付与される |
| oauth2.tokenKeyParamName | String | 任意 | ユーザー情報取得時にアクセスするトークンのパラメータ名。デフォルトはtoken |
| oauth2.authorizationMethod | String | 任意 | パラメータ(client_id/client_secret)の受け渡し方式。headerまたはbodyを指定。デフォルトはheader |
| oauth2.bodyFormat | String | 任意 | リクエスト形式のcontent-type。form(application/x-www-form-urlencoded)、jsonが指定可能。デフォルトはform |
| oauth2.params | Object | 必須 | ユーザー情報フィールドのマッピングルール。Keyは固定値、Valueは実際のレスポンス値に応じて設定 |
| oauth2.params.UserId | String | 必須 | ユーザーの一意な識別子 |
| oauth2.params.Name | String | 任意 | ユーザー名。既存ユーザーがいる場合は自動で上書きされます |
| oauth2.params.Email | String | 任意 | メールアドレス。メールで検索・登録する場合は必須。メールまたは携帯番号のいずれかが必須 |
| oauth2.params.Mobile | String | 任意 | 携帯電話番号。電話番号で検索・登録する場合は必須 |
| oauth2.params.Positions | Array | 任意 | 役職。ユーザーの役職を自動更新(新規作成はなし) |
| oauth2.params.Departments | Array | 任意 | 部門。ユーザーの部門を自動更新(新規作成はなし) |
| autoRegister | Boolean | 任意 | アカウント未登録時の自動作成有無。デフォルトは true |
| projectId | String | 必須 | HAPの組織番号。組織管理 > 組織情報 > 組織番号IDを参照。マルチ組織SSO時は設定不要 |
インタラクション図

アクセストークン取得APIは下記要件を満たす必要があります。
- POSTメソッドをサポート

レスポンスは以下のJSONフォーマットで返却される必要があります。
{
"access_token": "wQ7kZ5iJ1lK9iU0mJ2oH4rN0uW8gI1vV4fR1jC7yG8yX4gP2qK6mH1iS7iX4zQ1w",
"expires_in": 7200 // 単位:秒
}
ユーザー情報取得APIは下記要件を満たす必要があります。
- GETメソッドをサポート(userInfoUrlパラメータ説明を参照)
レスポンスは次のJSONフォーマットで返却されます。
{
"data": {
"uid": "userid",
"name": "name",
"email": "email",
"mobilePhone": "mobile phone number",
"positions": ["position1", "position2"],
"departments": ["department1", "department2"]
}
}
上記のレスポンス例に基づくparamsの設定は以下のとおりです。
"params": {
"UserId": "uid",
"Name": "name",
"Email": "email",
"Mobile": "mobilePhone",
"Positions": "positions",
"Departments": "departments"
}
2. 設定ファイルのマウント
対象マイクロサービスアプリケーションの
docker-compose.yamlを編集し、volumes項目にファイルマウント設定を追加します。デフォルトパスは/data/mingdao/script/docker-compose.yamlです。 その後、マイクロサービスアプリケーションを再起動します。
- ./volume/sso/sso.json:/usr/local/MDPrivateDeployment/sso/OptionFile/sso.json
関係の検索を有効にする
外部サービスの関連 ID を紐付ける場合は、
extend.jsonを作成してください。デフォルトパスは/data/mingdao/script/volume/sso/extend.jsonです。内容は次のとおりです。
{
"relation": true
}
ファイルのマウント設定を追加します。
- ./volume/sso/extend.json:/usr/local/MDPrivateDeployment/sso/extend.json
マウント設定後、マイクロサービスアプリケーションを再起動してください。
再起動後、GET メソッドで {HAP}/orgsso/checkssoconfig にアクセスし、設定ファイルが正常にマウントされたか確認できます。
3. シングルサインオン
単一の組織
ブラウザーで次の URL にアクセスします:{HAP}/orgsso/sso?returnUrl={returnUrl}
複数の組織
ブラウザーで次の URL にアクセスします:{HAP}/orgsso/sso?returnUrl={returnUrl}&appKey={appKey}&sign={sign}×tamp={timestamp}&projectId={projectId}
複数の組織を使用する場合は、projectId をパラメーターで渡す必要があります。企業の認証・認可パラメーターも必要です。
企業認証の署名アルゴリズムは、{HAP}/apidoc/zh-Hans/ を参照してください。
{HAP} は HAP システムの URL です。例:http://192.168.10.20:8880
{returnUrl} はログイン成功後 のリダイレクト先 URL で、省略できます。アプリケーション画面に移動する場合の例:http://192.168.10.20:8880/app/cf595091-e3ac-4669-a320-068e55533c33/64477b37df36209b5f36f1cf/64477b4f61655012a90ed994?from=insite
アクセス中に SSO Error が表示された場合は、管理者アカウントで HAP にログインし、右上のアバターから「プラットフォーム管理 > 運用管理 > ログ」に進みます。サービス名が sso のログを検索して、エラーの原因を確認してください。