シングルサインオン(SSO)仕様と実装ガイド
- 対応バージョン: learningBOX 2.5.2 以降
- プロトコル: HTTPS
- ドメイン: お客様の運用ドメイン(例: lms.learningbox.online)
- HTTPメソッド: GET, POST(action=sso 以外のパラメータは POST を推奨)
- エンドポイント: https://{tenant-domain}/?action=sso
概要
- 利用用途: learningBOX へのログインを行います。
- エンドポイント:
?action=sso
- メソッド: GET/POST(セキュリティとURL長、Referrer露出抑止の観点から、action 以外は POST 推奨)
- 備考: リクエストパラメータが複数設定されている場合は AND 検索(評価)となります。
必須パラメータ
| パラメータ |
型 |
説明 |
例 |
login |
string |
ログインID |
tatsuno-user1 |
sco_id |
number |
教材(またはフォルダ)内部ID。ログインのみを行いたい場合は 0 を指定 |
0 |
time |
number |
現在時刻(UNIXタイム、秒) |
1542088980 |
key |
string |
ログイン認証キー |
(下記参照) |
login の詳細
使用可能文字は半角英数字、および以下の記号のみです:
| 記号 |
名称 |
! |
エクスクラメーションマーク |
" |
ダブルクォーテーション |
# |
シャープ |
$ |
ドル記号 |
% |
パーセント |
& |
アンパサンド |
' |
シングルクォーテーション |
( |
左括弧 |
) |
右括弧 |
* |
アスタリスク |
+ |
プラス |
, |
カンマ |
- |
ハイフン |
. |
ピリオド |
/ |
スラッシュ |
: |
コロン |
; |
セミコロン |
< |
小なり |
= |
イコール |
> |
大なり |
? |
クエスチョンマーク |
[ |
左角括弧 |
] |
右角括弧 |
^ |
キャレット |
_ |
アンダースコア |
` |
バッククォート |
注意: @(アットマーク)は使用できません。
上記以外の文字を使用した場合は利用不可(SSO Error 224 が表示されます)
key の詳細
生成式: sha256(login + "/" + secret + "/" + sco_id + "/" + time)
PHP例:
$key = hash('sha256', $login.'/'.$secret.'/'.$sco_id.'/'.$time);
オプションパラメータ
アカウント設定
| パラメータ |
型 |
説明 |
add_account |
number |
アカウント追加設定 |
email |
string |
メールアドレス |
name |
string |
氏名 |
nickname |
string |
ディスプレイネーム |
status |
number |
ステータス |
add_account の詳細
| 値 |
動作 |
0 |
アカウントが存在しない場合はエラーコード200を返す。存在する場合はそのままログイン |
1 |
アカウントが存在しない場合は作成してログイン。存在する場合はそのままログイン |
email / name / nickname の詳細
これらのパラメータは以下の共通動作をします:
- 渡されない場合: 更新しない
- 渡された場合: アカウントが存在する場合は更新、存在しない場合はこの値で登録
使用禁止文字:
- name: \(SSO Error 225)
- nickname: \(SSO Error 226)
status の詳細
- 初回作成時: 値を渡されない場合は
7(有効)で登録
- 既存アカウント:
0 を渡しても 7(有効)のまま変更しない
グループ管理
| パラメータ |
型 |
説明 |
add_group |
string |
グループ内部ID(group_id)でのグループ追加 |
add_group_code |
string |
グループコード(group_code)でのグループ追加 |
release_group |
string |
グループ内部ID(group_id)でのグループ削除 |
release_group_code |
string |
グループコード(group_code)でのグループ削除 |
共通仕様
- 複数指定する場合はカンマ区切り(例:
22,23,24)
add_group_code を指定した場合、add_group は無視される
release_group_code を指定した場合、release_group は無視される
- 所属できないグループ: オーナーIDが違う、商品グループである
権限管理
| パラメータ |
型 |
説明 |
形式 |
permission_score |
string |
成績管理権限(内部ID) |
グループID:教材ID:権限 |
permission_score_code |
string |
成績管理権限(コード) |
グループコード:教材コード:権限 |
permission_group |
string |
ユーザー管理権限(内部ID) |
グループID:権限 |
permission_group_code |
string |
ユーザー管理権限(コード) |
グループコード:権限 |
permission_contents |
string |
コンテンツ管理権限(内部ID) |
教材ID:権限 |
permission_contents_code |
string |
コンテンツ管理権限(コード) |
教材コード:権限 |
permission_assign |
string |
コンテンツ割当管理権限(内部ID) |
グループID:教材ID:権限 |
permission_assign_code |
string |
コンテンツ割当管理権限(コード) |
グループコード:教材コード:権限 |
権限の種類
| 権限種別 |
指定可能な権限値 |
| 成績管理権限 |
none(権限なし), edit(編集), view(閲覧), scoring(採点), approve_scoring(成績承認) |
| ユーザー管理権限 |
none(権限なし), edit(編集), view(閲覧) |
| コンテンツ管理権限 |
none(権限なし), edit(編集), view(閲覧) |
| コンテンツ割当管理権限 |
none(権限なし), edit(編集) |
権限解除
成績管理権限の解除には以下の値を使用: edit_none, view_none, scoring_none, approve_scoring_none
全権限の設定
- 成績管理権限:
-1:-1:edit で全ての成績に対して管理権限を設定
- ユーザー管理権限:
-1:edit で全てのグループを変更可能
- コンテンツ管理権限:
-1:edit で全てのフォルダの教材を変更可能
- コンテンツ割当管理権限:
-1:-1:edit で全てのグループ・教材に対して管理権限を設定
優先順位
コード指定のパラメータ(*_code)を指定した場合、対応する内部ID指定のパラメータは無視されます。
使用例
permission_score=23:5444:edit,23:5446:view
permission_score_code=1kumi:sansuu:edit,1kumi:kokugo:edit
permission_group=23:edit,24:view
permission_group_code=1kumi:edit,2kumi:edit
permission_contents=5444:edit,5446:view
permission_contents_code=sansuu:edit,kokugo:view
permission_assign=23:5444:edit,23:5446:edit
permission_assign_code=1kumi:sansuu:edit,1kumi:kokugo:edit
有効期限
| パラメータ |
型 |
説明 |
expiration_date |
string |
アカウントの有効期限日(形式: YYYY-MM-DD) |
expiration_from_creation |
number |
アカウント作成日からの有効期限日数 |
expiration_from_login |
number |
ログイン日からの有効期限日数 |
優先順位
expiration_date が設定されている場合、他のパラメータは無視される
expiration_from_creation が設定されている場合、expiration_from_login は無視される
expiration_from_login は上記が設定されていない場合のみ有効
使用例
expiration_date=2022-02-02
expiration_from_creation=30
expiration_from_login=7
商品・課金
| パラメータ |
型 |
説明 |
add_product |
string |
自動購入させる商品の内部ID |
add_product_key |
string |
自動購入させる商品のプロダクトキー |
subscription |
string |
アカウント課金の有無 |
add_product の詳細
- 形式:
商品コード:数量単位(例: P0001:1D,P0002:2W,P0003:3M,P0004:4Y)
- EC機能をご利用中で、決済方法「無料決済」が有効な場合のみ有効
- 自動購入済みの商品は再購入しない
| 単位 |
意味 |
範囲 |
D |
日 |
1~90日 |
W |
週 |
1~52週 |
M |
月 |
1~24ヶ月 |
Y |
年 |
1~5年 |
add_product_key の詳細
add_product を指定した場合は必須
- 生成式:
sha256(add_product + "/" + secret)
subscription の詳細
| 値 |
意味 |
required |
課金する |
none |
プラン契約を行っていないユーザーに対する課金対象フラグの解除 |
遷移先
| パラメータ |
型 |
説明 |
sco_code |
string |
コンテンツコード。ログイン先のフォルダ・教材のコンテンツコード。sco_id=0 の場合のみ有効 |
url |
string |
遷移先URL |
scene_code |
string |
シーンコード |
sco_code の詳細
sco_id=0 の場合のみ有効
- ログインだけ行いたい場合は指定しない
- 例:
QUIZ001
url の詳細
- 指定された場合、そのURLへ遷移
sco_id や sco_code より優先される
scene_code の詳細
- ログイン後のシーンのシーンコードを指定
- 存在しないシーンコードの場合、SSO Error 124
ユーザー属性
| パラメータ |
型 |
説明 |
lms_country |
string |
居住国(国名を英語表記で指定) |
lms_language |
string |
言語(ロケールコードで指定) |
lms_timezone |
string |
タイムゾーン(IANAタイムゾーン識別子で指定) |
lms_country の詳細
国名を英語表記で指定します(例: Japan, UnitedStatesOfAmerica)
全ての居住国一覧(クリックで展開)
| 値 | 国名 |
| Japan | 日本 |
| Afghanistan | アフガニスタン |
| Albania | アルバニア |
| Algeria | アルジェリア |
| Andorra | アンドラ |
| Angola | アンゴラ |
| AntiguaAndBarbuda | アンチグア・バーブーダ |
| Argentina | アルゼンチン |
| Armenia | アルメニア |
| Australia | オーストラリア |
| Austria | オーストリア |
| Azerbaijan | アゼルバイジャン |
| Bahamas | バハマ |
| Bahrain | バーレーン |
| Bangladesh | バングラデシュ |
| Barbados | バルバドス |
| Belarus | ベラルーシ |
| Belgium | ベルギー |
| Belize | ベリーズ |
| Benin | ベナン |
| Bhutan | ブータン |
| Bolivia | ボリビア |
| BosniaAndHerzegovina | ボスニア・ヘルツェゴビナ |
| Botswana | ボツワナ |
| Brazil | ブラジル |
| BruneiDarussalam | ブルネイ |
| Bulgaria | ブルガリア |
| BurkinaFaso | ブルキナファソ |
| Burundi | ブルンジ |
| CaboVerde | カーボベルデ |
| Cambodia | カンボジア |
| Cameroon | カメルーン |
| Canada | カナダ |
| CentralAfricanRepublic | 中央アフリカ共和国 |
| Chad | チャド |
| Chile | チリ |
| China | 中国 |
| Colombia | コロンビア |
| Comoros | コモロ |
| Congo | コンゴ |
| CostaRica | コスタリカ |
| CoteD'Ivoire | コートジボアール |
| Croatia | クロアチア |
| Cuba | キューバ |
| Cyprus | キプロス |
| CzechRepublic | チェコ |
| DemocraticPeople'sRepublicOfKorea | 朝鮮民主主義人民共和国 |
| DemocraticRepublicOfTheCongo | コンゴ民主共和国 |
| Denmark | デンマーク |
| Djibouti | ジブチ |
| Dominica | ドミニカ |
| DominicanRepublic | ドミニカ共和国 |
| Ecuador | エクアドル |
| Egypt | エジプト |
| ElSalvador | エルサルバドル |
| EquatorialGuinea | 赤道ギニア |
| Eritrea | エリトリア |
| Estonia | エストニア |
| Eswatini | エスワティニ |
| Ethiopia | エチオピア |
| Fiji | フィジ- |
| Finland | フィンランド |
| France | フランス |
| Gabon | ガボン |
| Gambia | ガンビア |
| Georgia | ジョージア |
| Germany | ドイツ |
| Ghana | ガーナ |
| Greece | ギリシャ |
| Grenada | グレナダ |
| Guatemala | グアテマラ |
| Guinea | ギニア |
| GuineaBissau | ギニアビサウ |
| Guyana | ガイアナ |
| Haiti | ハイチ |
| Honduras | ホンジュラス |
| Hungary | ハンガリ- |
| Iceland | アイスランド |
| India | インド |
| Indonesia | インドネシア |
| Iran | イラン(回教共和国) |
| Iraq | イラク |
| Ireland | アイルランド |
| Israel | イスラエル |
| Italy | イタリア |
| Jamaica | ジャマイカ |
| Jordan | ヨルダン |
| Kazakhstan | カザフスタン |
| Kenya | ケニア |
| Kiribati | キリバス |
| Kuwait | クウェート |
| Kyrgyzstan | キルギスタン |
| LaoPeople'sDemocraticRepublic | ラオス人民民主共和国 |
| Latvia | ラトビア |
| Lebanon | レバノン |
| Lesotho | レソト |
| Liberia | リベリア |
| Libya | リビア |
| Liechtenstein | リヒテンシュタイン |
| Lithuania | リトアニア |
| Luxembourg | ルクセンブルク |
| Madagascar | マダガスカル |
| Malawi | マラウィ |
| Malaysia | マレーシア |
| Maldives | モルディブ |
| Mali | マリ |
| Malta | マルタ |
| MarshallIslands | マーシャル諸島 |
| Mauritania | モーリタニア |
| Mauritius | モーリシャス |
| Mexico | メキシコ |
| Micronesia | ミクロネシア連邦 |
| Monaco | モナコ |
| Mongolia | モンゴル |
| Montenegro | モンテネグロ |
| Morocco | モロッコ |
| Mozambique | モザンビーク |
| Myanmar | ミャンマー |
| Namibia | ナミビア |
| Nauru | ナウル |
| Nepal | ネパール |
| Netherlands | オランダ |
| NewZealand | ニュージーランド |
| Nicaragua | ニカラグア |
| Niger | ニジェール |
| Nigeria | ナイジェリア |
| NorthMacedonia | 北マケドニア |
| Norway | ノルウェー |
| Oman | オマーン |
| Pakistan | パキスタン |
| Palau | パラオ |
| Panama | パナマ |
| PapuaNewGuinea | パプア・ニューギニア |
| Paraguay | パラグアイ |
| Peru | ペル- |
| Philippines | フィリピン |
| Poland | ポーランド |
| Portugal | ポルトガル |
| Qatar | カタール |
| RepublicOfKorea | 韓国 |
| RepublicOfMoldova | モルドバ |
| Romania | ルーマニア |
| RussianFederation | ロシア連邦 |
| Rwanda | ルワンダ |
| SaintKittsAndNevis | セントクリストファー・ネイビス |
| SaintLucia | セントルシア |
| SaintVincentAndTheGrenadines | セントビンセントおよびグレナディーン諸島 |
| Samoa | サモア |
| SanMarino | サンマリノ |
| SaoTomeAndPrincipe | サントメ・プリンシペ |
| SaudiArabia | サウジアラビア |
| Senegal | セネガル |
| Serbia | セルビア |
| Seychelles | セイシェル |
| SierraLeone | シエラレオネ |
| Singapore | シンガポール |
| Slovakia | スロバキア |
| Slovenia | スロベニア |
| SolomonIslands | ソロモン諸島 |
| Somalia | ソマリア |
| SouthAfrica | 南アフリカ |
| SouthSudan | 南スーダン |
| Spain | スペイン |
| SriLanka | スリランカ |
| Sudan | スーダン |
| Suriname | スリナム |
| Sweden | スウェーデン |
| Switzerland | スイス |
| SyrianArabRepublic | シリア |
| Tajikistan | タジキスタン |
| Thailand | タイ |
| Timor-Leste | 東ティモール |
| Togo | トーゴ |
| Tonga | トンガ |
| TrinidadAndTobago | トリニダード・トバゴ |
| Tunisia | チュニジア |
| Turkey | トルコ |
| Turkmenistan | トルクメニスタン |
| Tuvalu | ツバル |
| Uganda | ウガンダ |
| Ukraine | ウクライナ |
| UnitedArabEmirates | アラブ首長国連邦 |
| UnitedKingdomOfGreatBritainAndNorthernIreland | 英国 |
| UnitedRepublicOfTanzania | タンザニア |
| UnitedStatesOfAmerica | 米国 |
| Uruguay | ウルグアイ |
| Uzbekistan | ウズベキスタン |
| Vanuatu | バヌアツ |
| Venezuela | ベネズエラ |
| VietNam | ベトナム |
| Yemen | イエメン |
| Zambia | ザンビア |
| Zimbabwe | ジンバブエ |
lms_language の詳細
ロケールコードで指定します。
| 値 |
言語 |
ja_JP |
日本語 |
en_US |
英語 |
vi_VN |
ベトナム語 |
id_ID |
インドネシア語 |
de_DE |
ドイツ語 |
es_ES |
スペイン語 |
fr_FR |
フランス語 |
my_MM |
ミャンマー語 |
pt_PT |
ポルトガル語 |
tl_PH |
タガログ語 |
ru_RU |
ロシア語 |
ur_PK |
ウルドゥー語 |
hi_IN |
ヒンディー語 |
th_TH |
タイ語 |
km_KH |
クメール語 |
zh_CN |
中国語(簡体字) |
zh_TW |
中国語(繁体字) |
ko_KR |
韓国語 |
lms_timezone の詳細
IANAタイムゾーン識別子で指定します。
| 値 |
タイムゾーン |
| Asia/Tokyo |
東京標準時 (UTC+09:00) |
| Europe/Budapest |
中央ヨーロッパ標準時 (UTC+01:00) |
| Africa/Lagos |
西中央アフリカ標準時 (UTC+01:00) |
| Europe/Amsterdam |
西ヨーロッパ標準時 (UTC+01:00) |
| Europe/Paris |
ロマンス標準時 (UTC+01:00) |
| Africa/Windhoek |
ナミビア標準時 (UTC+01:00) |
| Africa/Harare |
南アフリカ標準時 (UTC+02:00) |
| Europe/Helsinki |
FLE標準時 (UTC+02:00) |
| Europe/Sofia |
E.ヨーロッパ標準時 (UTC+02:00) |
| Africa/Cairo |
エジプト標準時 (UTC+02:00) |
| Europe/Bucharest |
GTB標準時 (UTC+02:00) |
| Asia/Jerusalem |
イスラエル標準時 (UTC+02:00) |
| Asia/Amman |
ヨルダン標準時 (UTC+02:00) |
| Asia/Beirut |
中東標準時 (UTC+02:00) |
| Asia/Damascus |
シリア標準時 (UTC+02:00) |
| Europe/Istanbul |
トルコ標準時 (UTC+02:00) |
| Asia/Kuwait |
アラブ標準時 (UTC+03:00) |
| Europe/Minsk |
ベラルーシ標準時 (UTC+03:00) |
| Africa/Nairobi |
E.アフリカ標準時 (UTC+03:00) |
| Asia/Baghdad |
アラビック標準時 (UTC+03:00) |
| Europe/Moscow |
ロシア標準時 (UTC+03:00) |
| Asia/Tehran |
イラン標準時 (UTC+03:30) |
| Asia/Yerevan |
コーカサス標準時 (UTC+04:00) |
| Asia/Baku |
アゼルバイジャン標準時 (UTC+04:00) |
| Asia/Tbilisi |
アラビア標準時 (UTC+04:00) |
| Asia/Kabul |
アフガニスタン標準時 (UTC+04:30) |
| Asia/Ashgabat |
西アジア標準時 (UTC+05:00) |
| Asia/Karachi |
パキスタン標準時 (UTC+05:00) |
| Asia/Kolkata |
インド標準時 (UTC+05:30) |
| Asia/Colombo |
スリランカ標準時 (UTC+05:30) |
| Asia/Kathmandu |
ネパール標準時 (UTC+05:45) |
| Asia/Dhaka |
中央アジア標準時 (UTC+06:00) |
| Asia/Yangon |
ミャンマー標準時 (UTC+06:30) |
| Asia/Bangkok |
東南アジア標準時 (UTC+07:00) |
| Asia/Singapore |
シンガポール標準時 (UTC+08:00) |
| Asia/Taipei |
台北標準時 (UTC+08:00) |
| Asia/Hong_Kong |
香港標準時 (UTC+08:00) |
| Asia/Shanghai |
中国標準時 (UTC+08:00) |
| Asia/Macau |
マカオ標準時 (UTC+08:00) |
| Asia/Ulaanbaatar |
ウランバートル標準時 (UTC+08:00) |
| Asia/Seoul |
韓国標準時 (UTC+09:00) |
| Australia/Melbourne |
オーストラリア東部標準時 (UTC+10:00) |
| Pacific/Guam |
西太平洋標準時 (UTC+10:00) |
| Pacific/Noumea |
中央太平洋標準時 (UTC+11:00) |
| Pacific/Auckland |
ニュージーランド標準時 (UTC+12:00) |
| Pacific/Apia |
サモア標準時 (UTC+13:00) |
| America/Argentina/Buenos_Aires |
アルゼンチン標準時 (UTC-03:00) |
| America/Sao_Paulo |
E.南アメリカ標準時 (UTC-03:00) |
| America/Santiago |
太平洋南アメリカ標準時 (UTC-03:00) |
| America/Cayenne |
南アメリカ東部標準時 (UTC-03:00) |
| America/Montevideo |
モンテビデオ標準時 (UTC-03:00) |
| America/Manaus |
南アメリカ西部標準時 (UTC-04:00) |
| America/Asuncion |
パラグアイ標準時 (UTC-04:00) |
| America/Bogota |
南アメリカ太平洋標準時 (UTC-05:00) |
| America/Mexico_City |
中部標準時(メキシコ) (UTC-06:00) |
| America/Phoenix |
山地標準時 (UTC-07:00) |
| America/Vancouver |
太平洋標準時 (UTC-08:00) |
| Pacific/Honolulu |
ハワイ標準時 (UTC-10:00) |
| UTC |
グリニッジ標準時 (UTC) |
カスタムフィールド
| パラメータ |
型 |
説明 |
{custom_field_key} |
string |
カスタムフィールドのキー名をパラメータ名として指定 |
使用方法
カスタムフィールドのキー名をそのままパラメータ名として使用します。
使用禁止文字: \(SSO Error 227)
入力形式による制約
| 入力形式 |
制約 |
| テキスト形式 |
50文字まで |
| テキストエリア形式 |
1000文字まで |
| ラジオボタン・プルダウン・チェックボックス |
値として設定されている文字列を連携 |
| 日付 |
Y-m-d 形式(例: 2022-01-17)または j-F-Y 形式(例: 17-January-2022) |
レスポンス
正常系(302 Found)
認証成功時は HTTP 302 Found でリダイレクトします。
| 条件 |
リダイレクト先 |
sco_id=0 |
マイページ /sys/index.php |
sco_id=フォルダ |
学習画面 /sys/index.php?action=courseAll¤t-folder={sco_id} |
sco_id=コンテンツ |
受講画面(例: /sys/index.php?action=quizPlayer&options=...) |
url 指定あり |
指定の遷移先(例: /sys/?action=courseAll) |
| パラメータ不足 |
トップ画面 /index.php |
異常系(エラー)
サーバーエラー(500系)
| HTTPステータス |
説明 |
| 500 Internal Server Error |
DBエラー等のサーバー内部エラー |
クライアントエラー(400系)
パラメータエラーの場合、エラーページが表示されます。
既存アカウントにログインする際のパラメータエラー
| コード |
エラー名 |
内容 |
| 001 |
SSO Error 001 |
loginユーザが存在しない |
| 002 |
SSO Error 002 |
timeが15時間オーバー |
| 003 |
SSO Error 003 |
keyが不正 |
| 004 |
SSO Error 004 |
アカウント上限エラー |
| 005 |
SSO Error 005 |
使用済みのキー |
| 007 |
SSO Error 007 |
リファラーの不一致 |
| 008 |
SSO Error 008 |
独自SSOの利用未設定 |
| 009 |
SSO Error 009 |
グループ制限エラー |
| 101 |
SSO Error 101 |
Email空文字エラー |
| 102 |
SSO Error 102 |
Email形式エラー |
| 103 |
SSO Error 103 |
Email重複エラー |
| 104 |
SSO Error 104 |
氏名空文字エラー |
| 105 |
SSO Error 105 |
氏名長超過(50文字まで) |
| 106 |
SSO Error 106 |
ディスプレイネームが空白文字のみで構成されている場合のエラー |
| 107 |
SSO Error 107 |
ディスプレイネームの長さ違反(3文字以上50文字以下) |
| 109 |
SSO Error 109 |
不正なgroup_idの指定 |
| 110 |
SSO Error 110 |
不正なstatusの指定 |
| 111 |
SSO Error 111 |
指定したgroup_idまたはその親グループのアカウント登録数が上限に達している |
| 112 |
SSO Error 112 |
permission_score_codeもしくはpermission_score:/で区切りでのカラム数不一致 |
| 113 |
SSO Error 113 |
permission_score_codeもしくはpermission_score:不適切なmode値 |
| 114 |
SSO Error 114 |
permission_score_codeもしくはpermission_score:グループ指定エラー |
| 115 |
SSO Error 115 |
permission_score_codeもしくはpermission_score:教材指定エラー |
| 116 |
SSO Error 116 |
permission_group_codeもしくはpermission_group:/で区切りでのカラム数不一致 |
| 117 |
SSO Error 117 |
permission_group_codeもしくはpermission_group:不適切なmode値 |
| 118 |
SSO Error 118 |
permission_group_codeもしくはpermission_group:グループ指定エラー |
| 119 |
SSO Error 119 |
permission_contents_codeもしくはpermission_contents:/で区切りでのカラム数不一致 |
| 120 |
SSO Error 120 |
permission_contents_codeもしくはpermission_contents:不適切なmode値 |
| 121 |
SSO Error 121 |
permission_contents_codeもしくはpermission_contents:教材指定エラー |
| 122 |
SSO Error 122 |
氏名に使用禁止文字「\」が含まれている |
| 123 |
SSO Error 123 |
ディスプレイネームに使用禁止文字「\」が含まれている |
| 124 |
SSO Error 124 |
存在しないscene_codeが指定された |
| 125 |
SSO Error 125 |
Email256文字数超過エラー |
| 126 |
SSO Error 126 |
Emailドメインチェックエラー |
| 127 |
SSO Error 127 |
統合元ユーザーのステータスを無効以外に変更しようとした場合のエラー |
アカウント登録時のパラメータエラー
| コード |
エラー名 |
内容 |
| 203 |
SSO Error 203 |
Email空文字エラー |
| 204 |
SSO Error 204 |
Email形式エラー |
| 205 |
SSO Error 205 |
Email重複エラー |
| 206 |
SSO Error 206 |
氏名空文字エラー |
| 207 |
SSO Error 207 |
氏名長超過(50文字まで) |
| 208 |
SSO Error 208 |
ディスプレイネームが空白文字のみで構成されている場合のエラー |
| 209 |
SSO Error 209 |
ディスプレイネームの長さ違反(3文字以上50文字以下) |
| 211 |
SSO Error 211 |
不正なgroup_idの指定 |
| 212 |
SSO Error 212 |
不正なstatusの指定 |
| 213 |
SSO Error 213 |
指定したgroup_idまたはその親グループのアカウント登録数が上限に達している |
| 214 |
SSO Error 214 |
permission_score_codeもしくはpermission_score:/で区切りでのカラム数不一致 |
| 215 |
SSO Error 215 |
permission_score_codeもしくはpermission_score:不適切なmode値 |
| 216 |
SSO Error 216 |
permission_score_codeもしくはpermission_score:グループ指定エラー |
| 217 |
SSO Error 217 |
permission_score_codeもしくはpermission_score:教材指定エラー |
| 218 |
SSO Error 218 |
permission_group_codeもしくはpermission_group:/で区切りでのカラム数不一致 |
| 219 |
SSO Error 219 |
permission_group_codeもしくはpermission_group:不適切なmode値 |
| 220 |
SSO Error 220 |
permission_group_codeもしくはpermission_group:グループ指定エラー |
| 221 |
SSO Error 221 |
permission_contents_codeもしくはpermission_contents:/で区切りでのカラム数不一致 |
| 222 |
SSO Error 222 |
permission_contents_codeもしくはpermission_contents:不適切なmode値 |
| 223 |
SSO Error 223 |
permission_contents_codeもしくはpermission_contents:教材指定エラー |
| 224 |
SSO Error 224 |
ログインIDに使用禁止文字が含まれている |
| 225 |
SSO Error 225 |
氏名に使用禁止文字「\」が含まれている |
| 226 |
SSO Error 226 |
ディスプレイネームに使用禁止文字「\」が含まれている |
| 227 |
SSO Error 227 |
カスタムフィールド(テキスト、テキストエリア)に使用禁止文字「\」が含まれている |
| 228 |
SSO Error 228 |
permission_assign_codeもしくはpermission_assign:/で区切りでのカラム数不一致 |
| 229 |
SSO Error 229 |
permission_assign_codeもしくはpermission_assign:不適切なmode値 |
| 230 |
SSO Error 230 |
permission_assign_codeもしくはpermission_assign:グループ指定エラー |
| 231 |
SSO Error 231 |
permission_assign_codeもしくはpermission_assign:教材指定エラー |
| 232 |
SSO Error 232 |
ログインIDの長さ違反(5文字以上50文字以下) |
| 233 |
SSO Error 233 |
Email256文字数超過エラー |
| 234 |
SSO Error 234 |
Emailドメインチェックエラー |
| 235 |
SSO Error 235 |
使用できないログインIDを使用しようとした |
その他エラー
| コード |
エラー名 |
内容 |
| 999 |
SSO Error 999 |
パスワード連携など |
実装例(補足)
以下は仕様に基づく参考実装コードです。環境に合わせて調整してください。
GET の URL 生成(PHP)
<?php
declare(strict_types=1);
$endpoint = 'https://{tenant-domain}/'; // 末尾スラッシュ維持
$login = 'user-123';
$sco_id = 0; // ログインのみは 0
$time = time();
$secret = 'YOUR_SHARED_SECRET';
$key = hash('sha256', $login . '/' . $secret . '/' . $sco_id . '/' . $time);
$params = [
'action' => 'sso',
'login' => $login,
'sco_id' => $sco_id,
'time' => $time,
'key' => $key,
// 'sco_code' => 'QUIZ001', // sco_id=0 のときのみ有効
// 'url' => '/sys/?action=courseAll', // 任意
];
$query = http_build_query($params, '', '&', PHP_QUERY_RFC3986);
header('Location: ' . $endpoint . '?' . $query);
exit;
POST のフォーム送信(PHP cURL)
<?php
declare(strict_types=1);
$endpoint = 'https://{tenant-domain}/';
$login = 'user1';
$sco_id = 0;
$time = time();
$secret = 'YOUR_SHARED_SECRET';
$key = hash('sha256', $login . '/' . $secret . '/' . $sco_id . '/' . $time);
$post = [
'action' => 'sso',
'login' => $login,
'sco_id' => $sco_id,
'time' => $time,
'key' => $key,
// 任意フィールドは必要に応じて追加
];
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($post, '', '&', PHP_QUERY_RFC3986),
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
]);
$res = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo "HTTP Status: {$info['http_code']}\n";
if (preg_match('/^Location:\s*(.+)$/mi', $res, $m)) {
echo "Redirect To: " . trim($m[1]) . "\n";
}
POST(HTMLフォーム例)
<form method="post" action="https://{tenant-domain}/">
<input type="hidden" name="action" value="sso" />
<input type="hidden" name="login" value="user1" />
<input type="hidden" name="sco_id" value="0" />
<input type="hidden" name="time" value="1657896543" />
<input type="hidden" name="key" value="e3b0c4..." />
<button type="submit">SSO でログイン</button>
</form>
注意
- 署名キー生成は「login/secret/sco_id/time」をそのままスラッシュで連結し、余分な空白を混入させないこと
- GET はURLやログに露出しやすいため、POST を推奨