その他の認証拡張機能¶
この章では、 認証プロバイダ・プラグイン による認証方式の変更以外の拡張情報について説明を行います。
シングルサインオン(SSO)対応¶
ユーザコードプロバイダを実装することで、intra-mart Accel Platform アクセス時にリクエスト情報(リクエストヘッダー、クッキー、リクエストパラメータなど)からユーザ情報を取得して自動ログインを行うことができます。 これにより、シングルサインオンを実現することができます。
ユーザコードプロバイダ・プラグイン¶
一般ユーザのシングルサインオンを実現するには、次のプロバイダを実装します。
プラグイン一覧 プロバイダ名 概要 拡張ポイント SSOユーザコードプロバイダ リクエスト情報を元に、シングルサインオンさせたいユーザコードを返却します。 jp.co.intra_mart.foundation.security.certification.sso.user.providers
ユーザコードプロバイダ・プラグイン詳細¶
インタフェース定義¶
package jp.co.intra_mart.foundation.security.certification.sso; import javax.servlet.http.HttpServletRequest; /** * シングルサインオンの自動ログイン用ユーザ情報の取得を行うインタフェースです。 */ public interface SSOUserProvider { /** * 自動ログインを行うユーザコードを返却します。<br> * ユーザコードを取得できなかった場合はnullを返却します。 * @param request サーブレットリクエスト * @return ユーザコード */ String getUserCd(final HttpServletRequest request); }
標準実装¶
初期状態で提供されるプロバイダはありません。
実装サンプル¶
リクエストパラメータ「sample_user_code」からユーザコードを取得し、シングルサインオンするサンプルです。 ユーザをリクエストパラメータ「sample_user_code」として送信することにより、自動ログインを実現します。 なお、本コードはサンプルであるため、セキュリティを考慮していません。
サンプル Java コード
package sample; import javax.servlet.http.HttpServletRequest; import jp.co.intra_mart.foundation.security.certification.sso.SSOUserProvider; public class SampleSSOUserProvider implements SSOUserProvider { @Override public String getUserCd(final HttpServletRequest request) { // リクエストパラメータからSSOユーザコードを取得します final String userCd = request.getParameter("sample_user_code"); if (userCd != null) { return userCd; } // nullを返却することで別のプロバイダに処理を委譲できます return null; } }サンプルプラグイン設定ファイル
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension point="jp.co.intra_mart.foundation.security.certification.sso.user.providers"> <sso-user-providers id="sample.programming_guide.sso_user_provider" name="Sample SSO User Provider" version="1.0" rank="50"> <sso-user-provider class="sample.SampleSSOUserProvider"/> </sso-user-providers> </extension> </plugin>引数のリクエスト情報から、ユーザコードを返却するようにします。nullを返却することで、別のプラグインに処理を委譲することができます。全てのSSOユーザコードプロバイダプラグインがnullを返却した場合、未認証としてアクセスされます。プラグインとして設定された順番にプロバイダが実行されます。 順番を考慮した実装および設定を行ってください。
注意
ユーザコードプロバイダの実装において、ユーザコードの取得方法が容易に推測可能であるような方式は、セキュリティ上好ましくありません。 ユーザコードの暗号化またはデータの改ざん防止等を考慮した実装を行うことをお奨めします。