Ich versuche, eine Remote-Protokollierung von einer entfernten Webseite zu unserem Portal zu tun. Der Benutzer von der entfernten Webseite hat Login/Passwort-Felder, die er übermitteln wird, um die Authentifizierung in unserem Portal zu verarbeiten. Wenn alles in Ordnung ist, wird er eingeloggt. Wenn dies fehlschlägt, wird er auf die Standard-Login-Seite des Portals mit dem entsprechenden Validierungsfehler (d. H. "Ungültiges Login/Passwort") umgeleitet.Prozess Remote-Authentifizierung mit Spring-Sicherheit
Ich habe versucht, dies über ein Servlet zu tun, in der Hoffnung, dass die Sicherheitsfelder des Formulars durch Anfragen transportiert werden, bis sie die Login-Seite des Portals erreichen.
Leider sehen sie so aus, als hätten sie es nicht erreicht, da ich immer einen "ungültigen Passwort/Login" -Fehler bekomme.
Da ich mit Spring wirklich unerfahren bin, bin ich mir wirklich nicht sicher, wie ich es erreichen könnte. Ich könnte darüber nachdenken, Informationen über BASE 64-kodierte Daten zu übermitteln, aber ich weiß nicht, wie ich diese Informationen an Spring weiterleiten soll, und bin mir auch nicht sicher, ob dies eine sichere Methode ist.
Also, wenn jemand von Ihnen eine Idee haben, werde ich es gerne lesen!
Hier ist der Remote-Formularcode:
<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
}
Der Servlet-Teil:
/**
* @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();
}
Das Standard-Login-Seite des Portals (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}"/>
Teil
und die Java-Authentifizierung:
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;
}
Vielen Dank im Voraus für Ihr Interesse!
Eigentlich ist es kein einzelnes Zeichen. Es ist nur ein weiterer Ort, an dem der Benutzer loggen kann. Es bedeutet nicht, dass er sich auch auf der Remote-Website anmeldet. Es ist nur eine Standard-Authentifizierung, aber mit einem entfernten Punkt. Wie auch immer, ich werde mir deine Links ansehen. Danke schon – Marvin
Er muss sich zweimal einloggen? Wenn ja, warum? – Simeon
Nein, er loggt entweder von der Standard-Login-Seite, hält sich in unserer Webapp oder loggt von der Webseite eines Patners.In diesem Fall enthält der Partner den Code, den ich zuerst eingefügt habe, und dieser Teil des Codes wird dazu führen, dass der Benutzer zu unserer Webanwendung weitergeleitet wird, direkt zum privaten Teil, wenn die Verbindung erfolgreich war, oder zur Standard-Login-Seite (Die von unserer Webapp) – Marvin