intra-mart Accel Platform / 認証プログラミングガイド

第2版 2014-04-01

«  サンプル   ::   コンテンツ

その他の認証拡張機能

この章では、 認証プロバイダ・プラグイン による認証方式の変更以外の拡張情報について説明を行います。

シングルサインオン(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を返却した場合、未認証としてアクセスされます。

プラグインとして設定された順番にプロバイダが実行されます。 順番を考慮した実装および設定を行ってください。

注意

ユーザコードプロバイダの実装において、ユーザコードの取得方法が容易に推測可能であるような方式は、セキュリティ上好ましくありません。 ユーザコードの暗号化またはデータの改ざん防止等を考慮した実装を行うことをお奨めします。

«  サンプル   ::   コンテンツ