Expression Languageを使って、様々なケースに対応してみた。

はじめに

今回は、Oktaの機能であるExpression Languageの柔軟性や、ユースケースを通じて具体的な利用シーンをご紹介します。

Expression Languageとは

ユーザーの属性情報をユーザープロファイルに保存する前や、認証、プロビジョニングでSaaSにユーザー同期する前に、属性情報を参照、変換、組み合わせることができる機能です。
例えば、Expression Languageを用いて記載することによってuser@test.localのドメイン部を削除してOkta上にユーザー名を作成することができます。他にも、first Nameとlast Nameを組み合わせて表示させることも可能です。簡単にまとめると、属性情報をカスタマイズできる関数ということです。

Expression Languageの記載方法の例

・Okta上のユーザーに対して、メールアドレスの@以下を消す
String.substringBefore(appuser.userName, "@")

・Okta上のユーザーの名前表記をfirst nameとlast nameを合わせる
appuser.firstname + appuser.lastname

など、記載方法は多くあります。

その他、Expression Languageについては以下のページからご確認いただけます。
https://help.okta.com/en/prod/Content/Topics/Settings/settings-customization-variables.htm

実際のユースケース

Expression Languageのユースケースを、具体的にご紹介します。

【ユースケース1】

課題:ADからOktaへユーザー同期する際に、Okta上ではユーザー名のみを表示させたい

解決策:@以下の部分を消しユーザー名のみを表示させるExpression Languageを利用

Expression Language:String.substringBefore(appuser.userName, "@")

【設定方法】

  1. Okta管理画面から、Directory Integrationsへ移動
  2. Provisioningタブへ移動しTo OktaのGeneralのEditボタンをクリック
  3. Okta Username formatをCustomに変更
  4. Expression Languageを下図の通り入力(下図は設定方法1~4を反映した状態)

※設定を行うとユーザーインポートを行った後に自動的にユーザー名のみで表示される

【ユースケース2】

課題:企業統合の際に、メールアドレスのドメイン部分を統一したい

解決策:@以下のドメイン部分を消し、「@test.local」というドメイン部分を加えるExpression Languageを記載

Expression Language:String.substringBefore(appuser.userName, "@") + "@test.local"

今回は以下のユーザーを利用します。

【設定方法】

  1. Okta管理画面から、Directory Integrationsへ移動
  2. Provisioningタブへ移動しTo OktaのGeneralのEditボタンをクリック
  3. Okta Username formatをCustomに変更
  4. Expression Languageを下図の通り入力(下図は設定方法1~4を反映させた状態)

※ユーザー名のドメイン部分を「@test.local」に変更ができている。

【ユースケース3】

課題:Okta上にEmail形式のユーザーと@以下がないユーザーがいるので統一したい

解決策:「test@test.local」と「test2」のユーザーがいるので、下記2点を満たすExpression Languageを設定
・test@test.localのユーザーはそのまま
・test2のユーザーに対して、@test.localをユーザー名に追加

Expression Language:
String.stringContains(user.login,"@")?String.substringBefore(user.login,"@")+"@test.local" : user.login + "@test.local"

*Expression LanguageではIF文を記載することができます。
上記のExpression Languageは、「ユーザー名に@が入っているユーザーに関しては@以下を@test.localに変更」「ユーザー名に@が入っていないユーザーに関しては、ユーザー名に@test.localを追加」という構文を記載しています。

Expression Languageを用いて、下図のような@以下がなく、「Expression-demo」となっているユーザーにドメインを追加します。

【設定方法】

  • Okta管理画面から、ApplicationsのApplicationsへ移動
  • Sign Onタブへ移動しSettingsのEditボタンをクリック
  • Credentials Details のApplication Username formatをCustomに変更
  • Expression Languageを下図の通り入力(下図は設定方法1~4を反映した状態)

【ユースケース4】

課題: Departmentが「Marketing」かつManagerIdが「1」のユーザーをアサインするグループルールを作成したい(複雑なグループルールの作成)

解決方法: 属性を複数組み合わせて、department=MarketingかつManagerId=1に当てはまるユーザーをグループに追加するルールを作成

Expression Language:user.department=="Marketing" AND user.managerId=="1"

【設定方法】

1:Directory>Peopleへ移動しユーザーを検索

2:Profile項目でDepartmentManagerIdを指定

3:Directories->Groups->Rulesへ移動

4:Add Ruleを選択

5:IF項目でUse Okta Expression Languageadvanced)をクリック

6:項目内にExpression Languageを記載

7:NameAssign to項目を設定しSaveをクリック(下図は設定方法3~7を設定した状態)

※実際にユーザーがグループルールによってアサインされている。

まとめ

今回はExpression Languageの機能について、ユースケースを交えご紹介しましたが、他の場面でも多く利用することができます。
複雑な環境でもExpression Languageを用いることによって多くの環境に柔軟に対応することができますので、是非ご利用いただけますと幸いです。

また、Oktaは多くの柔軟な機能を持っておりますので、IDaaSの検討をされている方は是非弊社までご連絡いただければと思います。

お問い合わせ・資料請求

株式会社マクニカ  Okta 担当

月~金 8:45~17:30