メインコンテンツへ移動

OIDC

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

デフォルトのデータディレクトリは /data/hap/script/volume/sso/sso.json です。内容は以下の通りです。 注意: マウント後に404が表示される場合、内容を json.cn にコピーしてJSONフォーマットが正しいか確認してください。

{
"mode": "common-oidc",
"name": "oidc",
"oidc": {
"oidcUrl": "",
"clientId": "",
"clientSecret": "",
"redirectUrl": "{HAP}/orgsso/oidc-redirect",
"responseTypes": "code",
"scope": "openid email",
"params": {
"UserId": "sub",
"Name": "name",
"Email": "email",
"Mobile": "phone_number"
},
"autoRegister": true,
"projectId": ""
}
}

各パラメータと説明

パラメータ型必須意味
oidc.oidcUrlString必須OIDCサービスディスカバリーアドレスを設定します。返却形式は以下参照: 設定パラメータ例
oidc.clientIdString必須アプリケーションへ配布されたクライアントID
oidc.clientSecretString必須アプリケーションへ配布されたクライアントシークレット
oidc.redirectUrlString必須コールバックアドレス。{HAP}/orgsso/oidc-redirectを設定してください
oidc.responseTypesString必須認可コード方式をサポート。codeを設定します
oidc.scopeString任意ユーザー情報取得スコープ。openId、email、profile等の組み合わせを指定可能。例:openid email。デフォルトはopenid
oidc.paramsObject必須ユーザー情報のフィールドマッピング規則。Keyは固定フィールド、Valueは実際のユーザー情報に準じて設定します。パラメータ設定方法
oidc.params.UserIdString必須ユーザーのユニーク識別子
oidc.params.NameString任意ユーザー名。既存の場合は上書きします
oidc.params.EmailString任意メールアドレス。検索または登録にメールを利用する場合必須。 メールまたは携帯番号いずれか必須。第三者連携が既に紐付いている場合は関係で検索できます
oidc.params.MobileString任意携帯番号。検索または登録に利用する場合必須
oidc.params.PositionsArray任意所属。この項目でユーザーの役職を自動更新します(自動生成はありません)
oidc.params.DepartmentsArray任意部署情報。自動でユーザーの所属部署を更新します(自動生成はありません)
autoRegisterBoolean任意アカウント存在しない場合、自動作成するか。デフォルトはtrue
projectIdString必須HAP組織番号。組織管理(右上)> 組織情報ページ > 組織番号ID。( マルチ組織シングルサインオンではこのパラメータ不要、ステップ3参照) 例: 1x-2x-3x-4x-5x

動作フロー図 OIDCの連携フロー

アクセストークン(access_token)取得APIは、以下条件を満たす必要があります。

  • POSTメソッドに対応し、リクエストパラメータはURLで渡す
  • サーバーのauthorizePathで事前認可を取得
  • 返却形式はJSONで、下記形式に準拠してください
{
"access_token": "SlAV32hkKG",
"token_type": "Bearer",
"refresh_token": "8xLOxBtZp8",
"expires_in": 3600,
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ..."
}

ユーザー情報取得APIは、以下条件を満たす必要があります。

  • GETメソッドで呼び出す(userInfoUrlパラメータ参照)
  • サーバーauthorizePathで事前認可を取得
  • 返却形式はJSONで、下記形式に準拠してください
{
"sub": "248289761001",
"name": "Jane Doe",
"email": "janedoe@example.com",
"phone_number": "123"
}

上記返却値の場合、paramsの設定は以下です。

"params": {
"UserId": "sub",
"Name": "name",
"Email": "email",
"Mobile": "phone_number"
}
oidcUrlリファレンス返却パラメータ例
{
"issuer": "https://oidc-demo.domain.com/oidc",
"authorization_endpoint": "https://oidc-demo.domain.com/oidc/auth",
"token_endpoint": "https://oidc-demo.domain.com/oidc/token",
"claims_parameter_supported": false,
"claims_supported": [
"sub",
"username"
],
"code_challenge_methods_supported": [
"plain",
"S256"
],
"end_session_endpoint": "https://oidc-demo.domain.com/oidc/session/end",
"grant_types_supported": [
"authorization_code",
"password",
"refresh_token"
],
"response_types_supported": [
"code"
],
"scopes_supported": [
"openid",
"offline_access",
"username",
"phone",
"email",
"address",
"profile"
],
"userinfo_endpoint": "https://oidc-demo.domain.com/oidc/me",
......
}

2. 設定ファイルのマウント​

ミドルウェアアプリケーションの docker-compose.yaml を編集します。デフォルトパスは /data/hap/script/docker-compose.yaml。 volumesに下記マウント設定を追加し、ミドルウェアアプリケーションを再起動してください。

- ./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 のログを検索して、エラーの原因を確認してください。