J'utilise wildfly 10.1.0.Final et keycloak 3.1.0.Final.Comment puis-je me débarrasser de la page de connexion par défaut de keycloak et utiliser ma propre page de connexion
Je veux utiliser ma propre page de connexion, j'ai créé une page de connexion avec un bouton d'envoi pour obtenir le jeton:
$('#submit').click(function(e) {
var creds = "client_id=sensorcloud-2.2.1-SNAPSHOT&grant_type=password&client_secret=b6b4f0ec-9936-46a2-9f40-69c207e2e0f2&username=" + $('#username')[0].value +"&password=" + $('#password')[0].value;
$.ajax({
url: 'https://localhost:8445/auth/realms/sensorcloud-auth/protocol/openid-connect/token',
data: creds,
headers: {'Content-Type':'application/x-www-form-urlencoded'},
type: 'POST',
success: function(data){
localStorage.setItem('currentUser', JSON.stringify(data));
window.location.replace("https://localhost:8443/sensorcloud-2.2.1-SNAPSHOT/dashboard.html");
},
error: function() {
alert("Invalid username or password");
}
});
});
Et ça marche.
Seulement avec ce code, dashboard.html n'a pas de contrainte de sécurité du tout, donc je mis en place le web.xml comme recommandé:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>SensorCloud</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>KEYCLOAK</auth-method>
<realm-name>sensorcloud-auth</realm-name>
</login-config>
<context-param>
<param-name>resteasy.role.based.security</param-name>
<param-value>true</param-value>
</context-param>
<security-constraint>
<web-resource-collection>
<web-resource-name>sensorcloud-2.2.1-SNAPSHOT</web-resource-name>
<url-pattern>/rest/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>sensorcloud-2.2.1-SNAPSHOT</web-resource-name>
<url-pattern>/index.html</url-pattern>
<url-pattern>/help.html</url-pattern>
<url-pattern>/register.html</url-pattern>
<url-pattern>/login.html</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>sensorcloud-2.2.1-SNAPSHOT</web-resource-name>
<url-pattern>/dashboard.html</url-pattern>
<url-pattern>/management.html</url-pattern>
<url-pattern>/password.html</url-pattern>
<url-pattern>/user.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>sensorcloud-2.2.1-SNAPSHOT</web-resource-name>
<url-pattern>/admin.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
</web-app>
Certaines pages publiques sont accessibles par quelqu'un comme index .html, login.html. Et certaines pages doivent être accessibles uniquement par l'utilisateur et l'administrateur, comme dashboard.html, et admin.html ne doit être accessible que par l'utilisateur admin.
Et dans mon royaume keycloak paramètre client, pour le client sensorclout-2.2.1-SNAPSHOT, j'ai l'URL de redirection comme
https://localhost:8443/sensorcloud-2.2.1-SNAPSHOT/ *
Mais chaque fois que je tente d'aller à dashboard.html, Je redirigerai la page de connexion par défaut de keycloak. Je veux être redirigé vers ma page de connexion personnalisée.
Comment puis-je y parvenir?
Merci
Avez-vous essayé d'utiliser la fonctionnalité Keycloak [themes] (https://keycloak.gitbooks.io/documentation/server_development/topics/themes.html)? Ce n'est pas exactement ce que vous voulez, mais vous pourrez peut-être accomplir la même chose. – stdunbar
Oui, je le sais, mais nous ne voulons pas l'utiliser. Nous voulons juste utiliser keycloak comme serveur d'authentification. – LebroNan