Je travaille sur la création d'une application Web angular.js et cherche comment intégrer keycloak
au projet. J'ai lu et regardé de nombreux tutoriels et je constate que la plupart d'entre eux ont des utilisateurs qui se connectent/s'enregistrent via la page de connexion par défaut de keycloak
qui les redirige ensuite vers l'application.
J'ai conçu ma propre page de connexion et d'inscription que je souhaite utiliser. Comment puis-je les utiliser au lieu de keycloak
default. Existe-t-il une API que je peux appeler ou peut-être que mon backend ferait cela? J'ai aussi lu qu'il existe des adaptateurs à ressort disponibles pour keycloak, puis-je les utiliser? Tout lien vers un exemple serait utile.
La deuxième question que je me pose est lors de l’inscription puis-je ajouter plus de détails d’utilisateur, comme adresse, date de naissance, sexe dans keycloak
? Parce que ma page d'inscription nécessite ces informations.
Développer les rôles de l'API
POST to your/keycloak/url/auth/realms/master/protocol/openid-connect/token
avec des données:
{
client_id : 'Id_of_your_client',
username : 'your_username',
password : '@#$%^&',
grant_type : "password"
}
vous donnera le jeton d'accès initial et le jeton d'actualisation
et
POST à la même URL avec
les données:
{
client_id : 'Id_of_your_client',
// client_secret : 'optional depending on the type of client',
grant_type : "refresh_token" ,
refresh_token : refresh_token_you_got_earlier
}
donnera les nouveaux jetons d'actualisation et d'accès. Ces jetons sont ce que keycloak vérifie pour l'autorisation/l'authentification.
Vous pouvez créer votre propre identifiant et envoyer les informations d'identification à keycloak via une API REST. Une fois que vous avez le jeton d'accès, il vous suffit de l'insérer dans l'en-tête de toute demande en cours adressée à une ressource protégée keycloak en
headers :{
Authorization : 'Bearer ' + access_token_you_got
}
3 étapes:
Dans le dossier myTheme, placez votre page de connexion personnalisée.
(la structure doit être identique à celle des thèmes de base ou de keycloak, mon conseil est de copier le thème de base, de le renommer et de le personnaliser).
Accédez à la console d’administration de la combinaison de clés dans Paramètres du domaine> Thèmes> Thème de connexion et sélectionnez myTheme.
Les deux sujets sont plus ou moins couverts dans le document officiel Keycloak Docs .
Mettez votre thème de connexion dans le répertoire des thèmes de la porte-clés et, en vous connectant par l'administrateur, changez le paramètre de thème de connexion et choisissez votre thème dans la liste déroulante . pour que.
Vous pouvez vous reporter à ce qui suit Configuration du thème Keycloak
Utilisez le code ci-dessous si vous souhaitez accéder à la page de connexion keycloak via Java et obtenir la réponse:
String uri = "http://localhost:7080/auth/realms/{RealmName}/protocol/openid-connect/token";
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(uri);
post.setHeader("User-Agent",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
List<BasicNameValuePair> urlParameters = new ArrayList<BasicNameValuePair>();
urlParameters.add(new BasicNameValuePair("grant_type", "password"));
urlParameters.add(new BasicNameValuePair("client_id", {ClientName}));
urlParameters.add(new BasicNameValuePair("username", {UserName}));
urlParameters.add(new BasicNameValuePair("password", {Password}));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line1 = "";
while ((line1 = rd.readLine()) != null) {
result.append(line1);
}
System.out.println(result);
Si vos nom d'utilisateur et mot de passe sont valides, response.getStatusLine (). GetStatusCode () donnera la valeur 200, avec accessToken et RefreshToken. Sinon, response.getStatusLine (). GetStatusCode () donnera la valeur 403 et les données: {"error": "invalid_grant", "error_description": "Informations d'identification non valides"}