legacy-knowledge-base
公開されました Jul. 2, 2025

NTLMシームレスログインの実装

投稿者

Brett Ripley

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

この記事は、 のレガシー記事です。。 Liferay製品の旧バージョンにも適用されます。 記事のメンテナンスは終了していますが、情報はまだ通用する可能性があります。

LiferayのNTLM設定に成功すると、Liferay内で "Sign In "をクリックするだけでユーザー認証ができるようになります。 これは確かに素晴らしい機能ですが、NTLM の統合を拡張して、ユーザーがポータル内の任意のページに移動したときに自動的に認証されるようにする必要がある場合もあります。

これを実現するためには、liferay-web.xmlの一部を変更することと、NTLMFilter.javaを変更することで、素直に解決することができます。 なお、これはカスタマイズであり、Liferayサポートではサポートされませんのでご注意ください。

解像度

シームレスな統合(または自動ログイン)を実現するために、liferay-web.xml と NTLMFilter.java の2つのファイルを変更する必要があります。

  1. liferay-web.xml
    Liferay-web.xml は、ポータル上の特定の URL にアクセスしたときに実行するフィルタを制御するファイルです。 NTLMフィルターがログインページだけでなく、ポータルのすべてのページで実行されるようにファイルを変更します。
    SSO Ntlm Filterのfilter-mappingセクションで、<url-pattern>/c/portal/login</url-pattern><url-pattern>/*<url-pattern>に変更します。 このような仕上がりになります:
    <filter-mapping>
    		<filter-name>SSO Ntlm Filter</filter-name>
    		<url-pattern>/*<url-pattern>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>REQUEST</dispatcher>
    		</filter-mapping>
    	
  2. NTLMFilter.java には、NTLM フィルタの実行時に呼び出されるクラスが含まれています。 ログアウトページ以外のすべてのページでクラスが実行されるように、次のように変更します。
    変更:
    if (path != null && path.endsWith("/login")) {
    下記に変更します。
    if (path != null &&
    !(path.endsWith("/guest/home") || path.endsWith("/portal/logout") || path.endsWith("/portal/layout"))
    ) {
    これで、ログインページでのみフィルタが実行されるのではなく、ログアウトページを除くすべてのページでフィルタが実行されるようになりました。
did-this-article-resolve-your-issue

legacy-knowledge-base