メインコンテンツへ移動

OAuth 2.0

1. 設定ファイルの作成​

デフォルトのデータディレクトリは /data/hap/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.oauth2UrlString必須oauth2認証サーバーのアドレス(例:http://192.168.10.80/)
oauth2.clientIdString必須アプリケーションに払い出されるClient Id
oauth2.clientSecretString必須アプリケーションに払い出されるClient Secret
oauth2.idParamNameString必須client_id とマッピングするパラメーター名。authorizePath および tokenPath のリクエストに応じて設定
oauth2.secretParamNameString必須client_secret とマッピングするパラメーター名。authorizePath および tokenPath のリクエストに応じて設定
oauth2.accessTokenParamNameString任意access_tokenとマッピングされるパラメーター名。tokenPathの返却値により設定。デフォルトはaccessToken
oauth2.redirectUriString必須コールバックURL。通常は {HAP}/orgsso/oauth2 に設定
oauth2.authorizePathString必須認可用パス。oauth2Url/authorizePathの形式で連結(例:/authorize)
oauth2.tokenPathString必須アクセストークン取得用パス。oauth2Url/tokenPathの形式で連結(例:/access_token)
oauth2.userInfoUrlString必須ユーザー情報取得用APIの完全なURL。リクエストURLにはトークンパラメータが自動付与される
oauth2.tokenKeyParamNameString任意ユーザー情報取得時にアクセスするトークンのパラメータ名。デフォルトはtoken
oauth2.authorizationMethodString任意パラメータ(client_id/client_secret)の受け渡し方式。headerまたはbodyを指定。デフォルトはheader
oauth2.bodyFormatString任意リクエスト形式のcontent-type。form(application/x-www-form-urlencoded)、jsonが指定可能。デフォルトはform
oauth2.paramsObject必須ユーザー情報フィールドのマッピングルール。Keyは固定値、Valueは実際のレスポンス値に応じて設定
oauth2.params.UserIdString必須ユーザーの一意な識別子
oauth2.params.NameString任意ユーザー名。既存ユーザーがいる場合は自動で上書きされます
oauth2.params.EmailString任意メールアドレス。メールで検索・登録する場合は必須。メールまたは携帯番号のいずれかが必須
oauth2.params.MobileString任意携帯電話番号。電話番号で検索・登録する場合は必須
oauth2.params.PositionsArray任意役職。ユーザーの役職を自動更新(新規作成はなし)
oauth2.params.DepartmentsArray任意部門。ユーザーの部門を自動更新(新規作成はなし)
autoRegisterBoolean任意アカウント未登録時の自動作成有無。デフォルトは true
projectIdString必須HAPの組織番号。組織管理 > 組織情報 > 組織番号IDを参照。マルチ組織SSO時は設定不要

インタラクション図
OAuth2.0の連携フロー

アクセストークン取得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/hap/script/docker-compose.yaml です。 その後、マイクロサービスアプリケーションを再起動します。

- ./volume/sso/sso.json:/usr/local/MDPrivateDeployment/sso/OptionFile/sso.json

関係の検索を有効にする​

外部サービスの関連 ID を紐付ける場合は、extend.json を作成してください。デフォルトパスは /data/hap/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}&timestamp={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 のログを検索して、エラーの原因を確認してください。