離れた Web ページからポータルへのリモート ロギングを実行しようとしています。離れた Web ページのユーザーには、ポータルで認証を処理するために送信するログイン/パスワード フィールドがあります。すべてが問題なければ、ログに記録されます。失敗した場合、ポータルの標準ログイン ページにリダイレクトされ、一致する検証エラー (つまり、「無効なログイン/パスワード」) が表示されます。
ポータルのログイン ページに到達するまで、フォームのセキュリティ フィールドがリクエストを介して転送されることを期待して、サーブレットを介して実行しようとしました。
残念ながら、「無効なパスワード/ログイン」エラーが常に発生するため、到達していないようです。
私はSpringの経験がまったくないので、どうすればそれを達成できるか本当にわかりません。BASE 64でエンコードされたデータを介して情報を渡すことを検討するかもしれませんが、それらの情報をSpringに渡す方法もわかりませんし、これが安全な方法であるかどうかもわかりません.
だから、もしあなたの誰かが何か考えを持っているなら、私は喜んでそれを読みます!
リモートフォームコードは次のとおりです。
<form id="connexion">
<input id="j_username" name="j_username" type="text" value="Email" class="field"/>
<input id="j_password" name="j_password" type="password" value="Mot de passe" class="field"/>
<input type="button" class="btn" value="OK" onClick="javascript:register()"/>
</form>
function register(){
urlSite=http://localhost:8080/monApp/DistantLogingServlet
this.document.location=urlSite
}
サーブレット部分:
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
* @param request
* @param response
* @throws IOException
* @throws ServletException
*/
protected final void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
final ExternalContext context = FacesUtils.getFacesContext( request, response, servletContext).getExternalContext();
final RequestDispatcher dispatcher = request.getRequestDispatcher("/j_spring_security_check");
dispatcher.forward(request, (ServletResponse) context.getResponse());
FacesContext.getCurrentInstance().responseComplete();
}
ポータルの標準ログイン ページ (jsp):
<h:inputSecret
id="j_password"
type="text"
name="j_password"
value="#{user.password}"/>
<h:selectBooleanCheckbox
id="_spring_security_remember_me"
name="_spring_security_remember_me"
value="#{user.rememberme}"
class="float-left" />
<h:commandButton
action="#{user.doLogin}"/>
そしてJava認証部分:
public final String doLogin() throws IOException, ServletException {
final ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
final HttpServletRequest request = ((HttpServletRequest) context.getRequest());
final RequestDispatcher dispatcher = request.getRequestDispatcher("/j_spring_security_check");
dispatcher.forward(request, (ServletResponse) context.getResponse());
FacesContext.getCurrentInstance().responseComplete();
// It's OK to return null here because Faces is just going to exit.
return null;
}
ご関心をお寄せいただきありがとうございます。