サーブレットコンテナにいわゆる「LDAP レルム」を作成する必要があります。これを行う方法は、使用するサーブレットコンテナによって異なります。使用されているサーブレット コンテナに関する詳細を提供していないため、適切な回答を提供することは困難ですが、一般的には、レルム構成に関するサーブレット コンテナのドキュメントを読むだけで十分です。たとえば Tomcat の場合、それはRealm Configuration HOW-TOです。Tomcat の場合、JNDIRealm
. 詳細については、JSP wikiを参照してください。
<security-constraint>
次に、 で適切なエントリを宣言して、特定のページへのログインを要求するように Web アプリケーションを構成する必要がありますweb.xml
。ログインページとエラーページは<login-config>
、まったく同じ の entry で構成できますweb.xml
。
<security-constraint>
<web-resource-collection>
<web-resource-name>secured</web-resource-name>
<url-pattern>/secured/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>X</role-name> <!-- Should be your AD group name. -->
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/error.xhtml</form-error-page>
</form-login-config>
</login-config>
ログインフォームは POST し、入力フィールド名としてandj_security_check
を使用する必要があります。j_username
j_password
<form action="j_security_check" method="post">
<input type="text" name="j_username" />
<input type="password" name="j_password" />
<input type="submit" value="login" />
</form>
検証をよりきめ細かく制御し、JSF などを使用したい<h:inputText required="true" />
場合は、バッキング Bean アクション メソッドにサブミットすることもできますHttpServletRequest#login()
。j_security_check を使用した Java EE / JSF でのユーザー認証の実行も参照してください。
ログインしたユーザーの名前を取得するにはExternalContext#getRemoteUser()
、JSF コンテキストまたはHttpServletRequest#getRemoteUser()
サーブレット コンテキストで使用します。次のように、JSF EL でアクセスできます。
<p>Welcome, #{request.remoteUser}</p>
システム プロパティは実際にサーバー自身のユーザーを返しますが、このコンテキストではまったく意味がありません。