シングルサインオン(SSO)のNameIDとしてのカスタム項目の利用

シングルサインオン(SSO)のNameIDとしてのカスタム項目の利用

シングルサインオン(SSO)とは、1つのアカウント情報を使用して1度サインインするだけで、複数のアプリケーションを利用できる認証方法です。Zoho Oneのシングルサインオン機能を通じて他のアプリケーションにサインインする場合、Zoho Oneから対象のアプリケーションに対して、「NameID」(名前ID)と呼ばれる値が送信されます。この値は、Zoho Oneと対象のアプリの間でユーザーを識別するために使用されます。

例:
「hanako@zylker.biz」というメールアドレスを使用しているユーザーが、決済アプリを使用しているとします。また、決済アプリでは、サインインの際にメールアドレスではなく、ユーザー番号を使用する必要があるとします。上記のユーザーの場合、サインインの際に「hanako@zylker.biz」というメールアドレスではなく、「123******47」という番号を使用します。

この決済アプリとZoho Oneの間でシングルサインオン連携の設定を有効にしたとします。初期設定では、ユーザーの識別用の値(NameID)としては、メールアドレスの値がZoho Oneから決済アプリに送信されます。しかし、決済アプリの側では、メールアドレスでは該当のユーザーを識別できません。このため、エラーが発生してしまいます。このような問題を回避するため、シングルサインオンの設定において、連携先のアプリに対して送信する値をカスタマイズできます。

初期設定では、NameIDにはメールアドレスが設定されます。ただし、上記のような場合に対応するため、NameIDに別の情報を使用することも可能です(例:姓、名、カスタム項目)。この機能は、メールアドレスによる認証が行えないアプリケーションや、個別のユーザー名を必要とするアプリケーションとの連携に役に立ちます。

連携先のアプリケーションに応じたNameIDを設定するには
  1. Zoho Oneにサインインして、画面左側のメニューから[Directory]をクリックします。
  2. 画面左側のメニューから[アプリケーション]に移動して、対象のアプリケーションをクリックします。
  3. [シングルサインオン(SSO)]タブをクリックして、[サービスプロバイダーの詳細]タブに移動します。
  4. [認証情報の詳細]欄で、以下の内容を設定します。
    1. アプリケーションのユーザー名:連携対象のアプリケーションに対してユーザー名として送信する値を指定します。
    2. NameIDの形式:ユーザー名として送信する値(NameID)の形式を指定します。
  5. [保存する]をクリックします。
この設定欄では、NameID(名前ID)としてメールアドレス以外の項目やカスタム項目を指定できます。また、より高度な設定として、複数の項目を組み合わせて使用するための独自の式を設定することも可能です。独自の式を使用すると、Zoho Oneであらかじめ用意されている項目とカスタム項目の両方を組み合わせた値をNameIDとして使用できます。

独自の式の形式は以下のとおりです。
関数名(<項目の値や任意のテキスト>,<その他の入力値>)

独自のNameIDの式の画面の画像

たとえば、あるアプリケーションでは、ユーザー名として、メールアドレスの一部(@記号より前の部分)と従業員番号を組み合わせた値を使用しているとします。先ほどの例では、メールアドレスが「hanako@zylker.biz」で、従業員番号が「7469」である場合、ユーザー名は「hanako-7469」となります。この場合の具体的な設定としては、[NameIDの形式]を[Unspecified](指定なし)とし、[アプリケーションのユーザー名]を[個別指定]と指定します。また、[パターン(式)]には以下の値を指定します。
String.append(String.replace(user.email,"@zylker.biz","-"),user.従業員番号)

上記の式の動作内容の詳細は、以下のとおりです。
  1. まず、String.replaceという関数が実行されます。この関数は、指定したテキストを別のテキストに置き換えるためのものです。上記の式では、対象のユーザーのメールアドレスのうち、「@zylker.biz」という部分を、「-」(ハイフン)に置き換えます。結果としては、「hanako-」という値が出力されます。
  2. 次に、String.appendという関数が実行されます。この関数は、指定したテキストに別のテキストを追加するためのものです。上記の式では、上記の関数での処理結果に対して、従業員番号「7469」を追加します。結果としては、「hanako-7469」という値が出力されます。
式において使用できる項目および関数は、以下のとおりです。

項目名
関数で参照する際に使用する値

user.firstName

user.lastName
メインのメールアドレス
user.email
氏名
user.displayName
カスタム項目
user.<カスタム項目名>
例:たとえば、 「車両番号」 という名前のカスタム項目の場合、 「user.車両番号」 という値を指定することで参照できます。

独自の式に使用できる関数(メソッド)は以下のとおりです。

関数(メソッド)
式の形式
説明

文字列の追加
String.append(<文字列>,<追加したい文字列>)
<文字列>の後ろに<追加したい文字列>を追加します。
String.append(user.lastName,"さん")

ユーザーの姓の後ろに「さん」という文字列を追加します。ユーザーの姓が「川根」である場合、「川根さん」という値が出力されます。
文字の最初の出現位置の出力
String.indexOf(<文字列>,<文字>)
指定された<文字>が<文字列>の中で最初に出てくる位置を出力します(先頭を表す番号は0です)。
String. indexOf(user.firstName,"o")

ユーザーの名で文字「o」が最初に出てくる位置を出力します。ユーザーの名が「Johnson」である場合、「1」が出力されます(関数内で先頭を表す番号は「0」であり、2番目の文字の開始位置を表す番号は「1」のため)。
文字列の置換
String.replace(<文字列>,<置換前の文字列>,<置換後の文字列>)
<文字列>の中に含まれる<置換前の文字列>をすべて<置換後の文字列>に置き換えます。
String.replace(user.firstName,"e","a")

ユーザーの名に含まれる文字「e」をすべて文字「a」に置き換えます。ユーザーの名が「ellen」である場合、「e」が「a」に置換され、「allan」が出力されます。
最初の文字列の置換
String.replaceFrist(<文字列>,<置換前の文字列>,<置換後の文字列>)
<文字列>の中に含まれる、<置換前の文字列>を最初の1回のみ<置換後の文字列>に置き換えます。
String.replaceFirst(user.firstName,"e","a")

ユーザーの名に含まれる文字列「e」を最初の1回のみ「a」に置き換えます。ユーザーの名が「ellen」である場合、先頭の「e」のみが「a」に置換され、「allen」が出力されます。
文字列の一部の取得
String.substring(<文字列>,<開始位置>,<終了位置>)
<文字列>に含まれる文字のうち、<開始位置>から<終了位置>までの一部分のみを出力します(先頭を表す番号は0です)。
String.substring(user.displayName,0,2)

ユーザーの氏名に含まれる1番目と2番目の文字列が取得されます(関数内で先頭を表す番号は「0」であり、1番目の文字の終了位置が「1」、2番目の文字の終了位置が「2」で表されるため)。ユーザーの氏名が「John」である場合、「Jo」が出力されます。
小文字への変換
String.toLowerCase(<文字列>)
<文字列>をすべて小文字に変換します。
String.toLowerCase(user.firstName)

ユーザーの名をすべて小文字に変換します。ユーザーの名が「Ellen」である場合、「ellen」が出力されます。
大文字への変換
String.toUpperCase(<文字列>)
<文字列>をすべて大文字に変換します。
String.toUpperCase(user.firstName)

ユーザーの名をすべて大文字に変換します。ユーザーの名が「Ellen」である場合、「ELLEN」が出力されます。
空白(スペース)の削除
String.trim(<文字列>)
<文字列>の前後にある空白(スペース)をすべて削除します。入力ミスによる空白や、他の関数の出力値に含まれる空白を削除し、データを綺麗に整えることができます。
String.trim(user.displayName)

ユーザーの氏名の前後に空白(スペース)が含まれている場合は削除します。ユーザーの氏名が「 Johnson Doe」として登録されている場合、「Johnson」の前の空白(スペース)が削除され、「Johnson Doe」が出力されます。