自動ログイン

Liferay DXPは多種多様な認証メカニズムをサポートしていますが、ユーザー認証には自社開発のシステムや他の製品も使用できます。そのために、認証システムをサポートする自動ログインコンポーネントを作成できます。

自動ログインコンポーネントは、要求に何らかの形でユーザーに関連付けられるもの(Cookie、属性など)が含まれているかどうかをチェックできます。コンポーネントがその関連付けを作成できる場合、そのユーザーを認証できます。

自動ログインコンポーネントの作成

Declarative Servicesコンポーネントを作成します。 コンポーネントは、com.liferay.portal.kernel.security.auto.login.AutoLoginインターフェイスを実装する必要があります。テンプレートの例を以下に示します。

import com.liferay.portal.kernel.security.auto.login.AutoLogin;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.osgi.service.component.annotations.Component;

@Component(immediate = true)
public class MyAutoLogin implements Autologin {

public String[] handleException(
HttpServletRequest request, HttpServletResponse response,
Exception e)
throws AutoLoginException {

/* This method is no longer used in the interface and can be
left empty */

}

public String[] login(
HttpServletRequest request, HttpServletResponse response)
throws AutoLoginException {

/* Your Code Goes Here */

}

}

ご覧のとおり、HttpServletRequestオブジェクトとHttpServletResponseオブジェクトにアクセスできます。サインオンソリューションが、Cookie、属性、パラメータなどのユーザーを識別するものをここに配置する場合は、その情報を取得し、ユーザー情報を取得してそのユーザーを認証するために必要なアクションを実行できます。

たとえば、ユーザーキーの暗号化された値を含む要求属性があるとします。これは、ユーザーキーの値を認識し、それを暗号化して要求属性として追加したサードパーティシステムでユーザーが認証されている場合にのみ存在できます。値を読み取り、同じ事前共有キーを使用して値を復号化し、その値を使用してユーザーを検索および認証するコードを作成できます。

これはすべてloginメソッドによって行われます。このメソッドは、次の順序で3つのアイテムを含むString配列を戻す必要があります。

  • ユーザーID
  • ユーザーパスワード
  • パスワードが暗号化されている場合はtrue、暗号化されていない場合はfalseのブールフラグ(Boolean.TRUE.toString()またはBoolean.FALSE.toString())。

リダイレクトの送信は、オプションのAutoLogin機能です。AutoLoginはサーブレットフィルターチェーンの一部であるため、2つのオプションがあります。両方とも、要求に属性を設定することで実装されます。属性は次のとおりです。

  • AutoLogin.AUTO_LOGIN_REDIRECT:このキーにより、AutoLoginFilterはフィルターチェーンの実行を停止し、属性の値で指定された場所にすぐにリダイレクトします。

  • AutoLogin.AUTO_LOGIN_REDIRECT_AND_CONTINUE:このキーにより、AutoLoginFilterはリダイレクトを設定し、チェーン内の残りのフィルターの実行を継続します。

自動ログインコンポーネントは、Liferay DXPがまだサポートしていないシステムに認証メカニズムを提供する便利な方法です。必要な統合を提供するために、これらは短時間で記述可能です。

関連トピック

Password-Based Authentication Pipelines

Writing a Custom Login Portlet

« 認証パイプラインパスワードベースの認証パイプライン »
この記事は役に立ちましたか?
1人中0人がこの記事が役に立ったと言っています