J'ai une exigence où la page de connexion ouvre la page principale dans une fenêtre contextuelle,authentification Open ID dans la même page
voilà comment je manipulaient dans l'authentification normale:
<http>
...
<form-login login-page="/Login.html" authentication-failure-url="/LoginHandler.jsp" always-use-default-target="false" default-target-url="/LoginHandler.jsp"/>
...
</http>
page Connexion crée un appel ajax (en interne à l'aide du Générateur de requêtes de GWT) et lit la page html de réponse. Ainsi, si LoginHandler.jsp contient "succès", le login est un succès, ou si LoginHandler.jsp contient "échec", la connexion a échoué.
Dans les deux cas, Login.html est conscient de l'échec ou du succès de l'authentification et ouvre une fenêtre contenant l'écran principal en cas de succès.
Maintenant, je dois faire en sorte que mon système prenne en charge OpenID, si je comprends bien, l'authentification open id fonctionne de la manière suivante, si elle réussit, elle ouvrira l'url de succès (principalement LoginHandler.jsp dans mon cas), Cependant, s'il échoue ... Il ouvre l'écran de connexion du serveur cible (par exemple l'écran de connexion de Google), comment puis-je concevoir mon code pour travailler dans ce senario ??
ceci est ma config:
<openid-login authentication-failure-url="/LoginHandler.jsp" default-target-url="/LoginHandler.jsp" user-service-ref="openIdUserService"/>
voici comment je suis connexion à l'aide RequestBuilder:
// Encode values for sending as a post request.
String postData = "j_username=" + username
+ "&j_password=" + password
+ ((isRemembered) ? "&_spring_security_remember_me=on" : "");
String serverUrl = URL.encode("j_spring_security_check");
/*
* Authenticate the user using a request builder to send the request to the server.
* <p>on successful authentication, open main screen in a pop up
* */
try
{
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST, URL.encode(serverUrl));
requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded");
requestBuilder.sendRequest(postData, new RequestCallback()
{
public void onError(Request request, Throwable exception)
{
//Do nothing
}
public void onResponseReceived(Request request, Response response)
{
String responseText = response.getText();
int indexStart = responseText.indexOf(startMessageIndicator) + startMessageIndicator.length();
int indexEnd = responseText.indexOf(endMessageIndicator);
String text = responseText.substring(indexStart, indexEnd);
//Login was a success
if (text.contains(successMessageIndicator))
{
//Woophie !! code for success comes here.
}
else if (text.contains(errorMessageIndicator))
{
//Ooops ! get the error message encoded in the page
}
}
});
}
catch (RequestException e)
{
//Do nothing
}
Est-il possible d'utiliser la même approche pour faire id ouvert une authentification basée?
Je ne comprends pas parfaitement votre question. Mais dans le cas où cela vous inspire, considérez le flux contextuel de cette expérience de connexion OpenID: http://openidux.dotnetopenauth.net/ –
comme mentionné, je suis capable de faire une connexion basée sur un ID ouvert, ce que je ne peux pas comprendre, c'est comment faites-le dans un style ajax –
J'ai vérifié ce lien, j'aimerais beaucoup savoir comment vous avez réalisé l'ouverture de referer dans une nouvelle fenêtre, ayant dit cela, je pense que vous rafraîchissez votre page ... –