gBizIDを使ったシングルサインオン(以下SSO)を実現するための設定手順を以下に記載します。SSOでログインするコミュニティサイトを作成し、サイトを公開してから以下の1~3の手順を実施してください。
1. 認証プロバイダーの設定
- プロバイダータイプは「Open ID Connect」を選択します。
- 名前とURL接尾辞は任意の文字列を入力します。
- コンシューマー鍵とコンシューマーの秘密はgBizIDに申請後渡される情報に置き換えるので、ダミーの文字列を入力しておきます。
- 承認エンドポイントURL、トークンエンドポイントURL、ユーザー情報エンドポイントURLには以下のURLを入力します。検証用組織ではURLのドメイン部分を「stg.gbiz-id.go.jp」 に変更してください。
- デフォルトの範囲には以下の文字列を入力します。
- openid profile user mandate email offline_access
- 登録ハンドラーは「GBizIDSSOHandler」を選択します。
- 他アカウントで登録を実行は、下記カスタムメタデータ型オブジェクトや作成/更新するオブジェクトへの参照/編集権限があるユーザーを選択します。
- 上記以外の項目はデフォルトのままにします。
- 保存後、生成されたコミュニティサイトのコールバックURLをリダイレクトURLとしてgBizIDに連携の申請をします。
- 申請により提供されてくる Client ID と Client Secret の値を、それぞれコンシューマ鍵とコンシューマの秘密に入力して再度保存します。
2. コミュニティサイトの設定
- 管理>メンバーで、サイトにログインするユーザーのプロファイルを追加します。3. カスタムメタデータの設定 でユーザーに割り当てるプロファイルを設定しない場合、「CustomerCommunityUser」は必須となります。
- 1. 認証プロバイダーの設定 が完了したら、管理>ログイン&登録>ログインページ設定 でログインオプションに認証プロバイダーで設定した名前が表示されるので、チェックをつけます。
3. カスタムメタデータの設定
3.1. gBizID Linkage
- カスタムメタデータ > gBizID連携に、SSO時に更新したいオブジェクトを追加します。
- 参照元オブジェクトと参照項目には、対象のオブジェクトを参照しているオブジェクトの情報を設定します。例えばユーザーオブジェクトには取引先責任者を参照するContactIdがあるため、UserとContactIdを設定します。
- 参照順はオブジェクトの参照関係に基づいて設定します。今回の例ではAccount→Contact、Contact→Userになるので、Accountが1、Contactが2、Userが3になります。
- 項目名とパラメータ名はそれぞれ番号で対応しており、パラメータ名で設定したgBizIDのパラメータ(4. パラメータ一覧 を参照)を項目にセットできます。
- 複数パラメータをカンマ区切りで指定するとパラメータが結合してセットされます。
- 固定項目名と固定値も同じく番号で対応しており、どのアカウントでも固定の値をセットできます。
- 新規SSO時に、対応付けパラメータ名で設定したgBizIDのパラメータに一致する項目を持つレコードを更新できます。これは既に存在するレコードに対応付けるための設定です。
3.2. gBizID SSO Setting の「既存レコードに対応付ける」にチェックがついていないと本設定は無効となります。
3.2. gBizID SSO Setting
- 「Setting」レコードを編集してください。
- 既存レコードに対応付けるにチェックをつけると 3.1. gBizID Linkage の対応付け設定が有効になります。
- ログインを拒否するアカウント種別にはログインさせたくないアカウント種別番号をカンマ区切りで指定します。
- gBizID エントリー:1
- gBizID プライム :2
- gBizID メンバー :3
- どちらの設定も新規SSO時の設定となります。
4.パラメータ一覧
パラメータ名 | データ型(最大文字 数) |
プライム | メンバー | エントリー | 説明 |
sub | String | 〇 | 〇 | 〇 |
アカウント管理番号 |
account_type | String(1) | 〇 | 〇 | 〇 | アカウント種別 1:gBizID エントリー 2:gBizID プライム 3:gBizID メンバー |
corp_type | String(1) | 〇 | 〇 | 〇 |
事業形態 |
corp_type_value | String(5) | 〇 | 〇 | 〇 |
事業形態 '法人'または'個人事業主'を返却 |
parent_id | Number | × | 〇 | × | gBizID メンバーの場合、親の gBizID プライムのアカウント管理番号を返却する。 整数値(1~2,147,483,647) |
corporate_number | String(13) |
〇 |
〇 | 〇 | 【基本情報】法人番号/個人事業主管理番号 |
name | String(150) | 〇 | 〇 | 〇 | 【基本情報】法人名/屋号 |
en_name | String | × | × | × | 【基本情報】法人名/屋号(英語表記) |
prefecture_name | String(2) | 〇 | 〇 | 〇 | 【基本情報】本店所在地/印鑑登録証明書住所(都道府県) ※JIS X 0401 都道府県コード |
prefecture_name_value | String(4) | 〇 | 〇 | 〇 | 都道府県コードを元に都道府県名を返却 |
address1 | String(64) | 〇 | 〇 | 〇 | 【基本情報】本店所在地/印鑑登録証明書住所(市区町村) |
address2 | String(300) | 〇 | 〇 | 〇 | 【基本情報】本店所在地/印鑑登録証明書住所(番地等) |
rep_last_nm | String(64) | 〇 | 〇 | 〇 | 【基本情報】代表者名/個人事業主氏名(姓) |
rep_first_nm | String(64) | 〇 | 〇 | 〇 | 【基本情報】代表者名/個人事業主氏名(名) |
rep_last_nm_kana | String(64) | 〇 | 〇 | 〇 | 【基本情報】代表者名フリガナ/個人事業主氏名フリガナ(姓) |
rep_first_nm_kana | String(64) | 〇 | 〇 | 〇 | 【基本情報】代表者名フリガナ/個人事業主氏名フリガナ(名) |
birthday_ymd | String(8) | 〇 | × | × | 【基本情報】代表者生年月日/個人事業主生年月日 yyyyMMdd |
user_last_nm | String(64) | 〇 | 〇 | 〇 | 【利用者情報】アカウント利用者氏名(姓) |
user_first_nm | String(64) | 〇 | 〇 | 〇 | 【利用者情報】アカウント利用者氏名(名) |
user_last_nm_kana | String(64) | 〇 | 〇 | 〇 | 【利用者情報】アカウント利用者氏名フリガナ(姓) |
user_first_nm_kana | String(64) | 〇 | 〇 | 〇 | 【利用者情報】アカウント利用者氏名フリガナ(名) |
user_post_code | String(7) | 〇 | 〇 | 〇 | 【利用者情報】連絡先郵便番号(ハイフンは含まない) |
user_prefecture_name | String(2) | 〇 | 〇 | 〇 | 【利用者情報】連絡先住所(都道府県) ※JIS X 0401 都道府県コード |
user_prefecture_name_value | String(4) | 〇 | 〇 | 〇 | 都道府県コードを元に都道府県名を返却 |
user_address1 | String(64) | 〇 | 〇 | 〇 | 【利用者情報】連絡先住所(市区町村) |
user_address2 | String(300) | 〇 | 〇 | 〇 | 【利用者情報】連絡先住所(番地等) |
user_address3 | String(64) | × | × | × | 【利用者情報】連絡先住所(マンション名等) |
user_department | String(64) | × | × | × | 【利用者情報】会社部署名/部署名 |
user_tel_no_contact | String(11) | × | × | × | 【利用者情報】連絡先電話番号(ハイフンは含まない) |
user_birthday_ymd | String(8) | 〇 | × | × | 【利用者情報】利用者 生年月日 yyyyMMdd |
mandate_info | client_idの配列指定 | ||||
client_id | String(256) | × | × | × | 該当ユーザの内部委任情報として登録されているRPのclient_id |
user_email | String(255) | 〇 | 〇 | 〇 | 【利用者情報】アカウント ID(メールアドレス) |
String(255) | 〇 | 〇 | 〇 | 【利用者情報】アカウント ID(メールアドレス) |
gBizID開発者用ガイドより。一部追記
5. 参考資料
[SolutionDev] Open ID Connect を使った SSO の実現例 (gBizID 編) | Developer Force Blog