🔖

HRBrain と Okta の SSO を OpenID Connect で構成する

2021/03/18に公開

はじめに

HRBrain というサービスを社内で利用する上で、OpenID Connect による SSO を IDaaS 製品の Okta を使って設定してみたメモです。

HRBrain 公式が動作確認している IdP は Azure AD と Google Workspace のみだそうで Okta については設定マニュアルの類は無かったので、今後実施する方のために残しておこうと思いました。

なお自分的には Okta で OAuth や OpenID Connect を利用する際の Authorization Server の確認方法の備忘録という意味でも書いています。

設定手順

HRBrain から CallbackURL を取得

まずは HRBrain にログインし、人事評価メニューから 運用管理 → アクセス制御 の順に開き、SSO 設定 を 設定する に変更します。
Callback URLを表示する をクリックすると https://{組織のドメイン名}.auth.hrbrain.jp/ssologin な URL が表示されるのでコピーしておきます(この後 Okta 側の設定で使います)

Okta 側の アプリケーション設定

Okta の管理画面に入って Applications → Add Application を選択

HRBrain は OIN にテンプレートが無いので Create New App から手動で作成します

Platform は web、Sign on method は OpenID Connect を選択して Create

Application name と Application logo に任意の内容を設定し、Login redirect URIs の Add URI をクリックし、先程 HRBrain の画面でコピーした Callback URL をペーストして Save します

保存されたアプリケーションの General タブを開きます。
ここは任意ですが、もし HRBrain 起点の SSO(RP Initiated Sign-On) だけではなく Okta 側からの SSO(IdP Initiated Sign-On) も実装したい場合は General Settings セクションの Allow grant types で Implicit (Hybrid)Allow ID Token with implicit grant typeにチェックを入れ、その下の LOGIN セクションの Login initiated by の値を Either Okta or App に設定し、Display application icon to users のチェックを入れておきましょう。

Client ID, Client Secret の取得と設定

続いてその下にある Client Credentials セクションの Client ID と Client secret をコピーし、HRBrain の SSO 設定画面で同名の設定項目にペーストします。

(Okta)

(HRBrain)

Authorization Server の情報取得と設定

残りの設定項目である issuer , authorization_endpoint , token_endpoint , jwks_uri ですが、Okta にはテナントを作成した時点で Org Authorization Server と呼ばれる組み込みの Authorization Server が用意されています。

Org Authorization Server は https://${yourOktaOrg}.okta.com/.well-known/openid-configuration にアクセスすることで JSON 形式で値を確認できます。

curl https://example.okta.com/.well-known/openid-configuration | jq
{
  "issuer": "https://example.okta.com",
  "authorization_endpoint": "https://example.okta.com/oauth2/v1/authorize",
  "token_endpoint": "https://example.okta.com/oauth2/v1/token",
  "userinfo_endpoint": "https://example.okta.com/oauth2/v1/userinfo",
  "registration_endpoint": "https://example.okta.com/oauth2/v1/clients",
  "jwks_uri": "https://example.okta.com/oauth2/v1/keys",

Org Authorization Server から参照したそれぞれの値をコピーして HRBrain 側の設定欄にペーストすればすべての設定項目が埋まるので保存をクリックします。

以上で SSO の設定は完了です。
実際に正常に SSO が動作するか確認してみましょう。

おまけ(自動ユーザ作成機能について)

前述のスクリーンショットにもありますが、HRBrain の SSO 設定画面には 自動ユーザ作成 という設定があります。
気になって確認してみたのですが、これは有効にしておくと SSO によるログイン時に IdP から渡されたユーザーが HRBrain に存在しない場合に自動的にユーザーを作成する機能のようです。
なおその際に IdP から渡されて自動設定される属性値は氏名とメールアドレスのみとなります。

ユーザーがログインする前に部署や役職をあらかじめ設定しておきたいという要件がある場合は難しいですが、そうではなく氏名とメールアドレスさえ入っていればいいという組織であれば利用する価値があるかもしれません。

GitHubで編集を提案

Discussion