こんにちは、こやしいです。
Oktaを利用したSAMLシングルサインオン(SSO)の設定をしている際、こんな壁にぶつかったことはありませんか?
「このアプリだけ、OktaのID(メールアドレス)とは関係ないユーザー名でログインさせたい…」
本記事ではこちらの解決方法として、「カスタム属性」を使って個別にユーザー名をマッピングする方法を解説します。
目次
以前の弊社ブログでは、ドメイン名の置換(@以降の変更)をしたい場合等に、Okta Expression Language(EL式)という変換ルールで一括対応する方法をご紹介しました。
例:Oktaに @example.comで登録し、アプリには @example.net でログインする
参考記事:
一方、今回はユーザーごとに変換後のIDが完全に異なり、全員に共通して適用できる変換式(ルール)が作成できない状態です。こういったケースで活躍するのが「カスタム属性」です。
例:Oktaに next.mode@xxx.co.jpで登録し、アプリにはntmd@xxx.comでログインする
Oktaでは、各ユーザーの情報(名前・メールアドレスなど)を「プロファイル」として管理しています。このプロファイルに好きな項目を追加できるのがカスタム属性の機能です。
今回は「アプリ専用のログインID」という項目を新しく追加し、ユーザーごとに値を登録します。そして、アプリへのログイン時にOktaがその値を参照して渡す、という流れで実現します。
設定手順
まずは、アプリ専用のユーザー名を格納する「カスタム属性(項目)」を追加します。
1. Okta管理コンソール画面で Directory > Profile Editor を開く
2. User (default) プロファイルを選択し、【+属性を追加】をクリック
3. 以下の情報を入力して保存 (入力値はあくまで一例となります)
表示名: GWSログイン名(管理上の表示名)
変数名: gws_login(設定で使う変数名)
これで「GWSログイン名」という項目が属性に追加されました。
次に、追加した項目に各ユーザーのアプリ専用IDを入力していきます。
1. Directory >ユーザーを開き、対象のユーザーを選択
2. プロファイルタブの編集をクリック
3.「GWSログイン名」欄に、そのユーザーのアプリ専用ID (ntmd@xxx.com)を入力して保存
この作業をアプリを使用するユーザー分、繰り返します。
最後に、アプリへ渡すユーザー名を「OktaのID」から「カスタム属性の値」に切り替えます。
1. アプリケーション > 対象アプリの サインオンタブ > 編集をクリック
2. アプリケーションユーザー名の形式を カスタムに変更
3. 入力欄に以下を記述して保存
ここでの“user.gws_login”は「このユーザーの “gws_login” 属性を参照する」という意味です。ステップ①で設定した 変数名がここで使われます。
これで、Oktaはログイン時に「ユーザー自身のOkta ID」ではなく、「カスタム属性に登録されたID」をアプリへ渡すようになります。
OktaのID(メールアドレス)とは関係ないユーザー名でログインしたい場合は、【カスタム属性+カスタムマッピング】の組み合わせで解決できます。
少し手間はかかりますが、一度設定してしまえば以降は安定して動作します。「特定のアプリだけ、別のIDでログインさせたい」という課題を解決したい方の参考になれば幸いです!