0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DENSOAdvent Calendar 2024

Day 7

Okta Expression LanguageでSSOユーザー名を動的に変更する方法

Last updated at Posted at 2024-12-06

はじめに

この記事はDENSO Advent Calendar 2024の7日目の記事です。

今回は、Oktaを利用したSSOを管理しているエンジニアや管理者向けの記事です。
Okta から SSO 時に使用するユーザー名を動的に変更したい場合に、それを実現する Okta の機能である Okta Expression Language について紹介します。

やりたかったこと

状況を下図に記します。Okta に登録しているユーザー名で使用している domainA が SSO 先のアプリでは使用できず、別の domainB を使用することになった場合を想定しています。

私が遭遇した場面ではそうではないのですが、社名変更や M&A があった場合などに Okta 側とアプリ側とで使用可能なドメインがズレていることは稀にあるようです。

この際に Okta アプリケーションの設定で、SSO 時に使用するユーザー名を動的に変更することで、SSO 先のアプリ側の制約に合わせて柔軟に SSO 設定を構築できると考えました。

設定箇所について

Okta Admin Console 上で、ツリーメニューの Applications > Applications を選択し、設定したい対象のアプリケーションを選択します。その後、アプリケーションの設定詳細画面にて、Sign On タブを選択し、Settings のカード右上にある Edit をクリックします。

image.png

image.png

この Settings の下部にある Application username format が該当箇所です。プルダウンメニューで候補を選択できます。この中から Custom を選択すると、SSO 時のユーザー名の設定変更ができます。

image.png

Custom の選択後、Expression Language Reference というリンクとともに、Enter an expression というプレースホルダーの入ったフォームが出現します。ここに Okta Expression Language で SSO 時に使用するユーザー名を記述すれば良いです。

image.png

Okta Expression Language について

上述した Okta Expression Language について簡単に紹介します。

これは、Okta 内でのみ解釈可能な記法で、便利な関数を多く含みます。この関数を使って、今回のやりたかったことのケースの様に SSO 先のユーザー名を動的に変更したり、その他 SSO 時に使用する属性値のうち空だった場合にどの様な値を渡すかの定義をできたりします。

今回のケースでの使用方法

image.png

今回は String.replace を使いました。使い方や挙動は以下の通りです。

Function Input parameter signature Return type example Output
String.replace (String input, String match, String replacement) String String.replace("This is a test", "is", "at") That at a test

まとめ

今回は動的にユーザー名を変更したい要望から調査を始め、Okta Expression Language を知り理解を深めることが出来ました。他にも Okta Expression Language を適用して解決できそうな課題があれば試してみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?