Utilisation de la façade client du fournisseur d'identité pour générer des jetons et les transmettre aux fournisseurs de service
Lorsqu'un utilisateur est authentifié et souhaite accéder aux services d'un autre fournisseur de services, appelez le code suivant du côté du fournisseur de services.
Pourquoi et quand exécuter cette tâche
Le code génère le jeton fédéré.
// One time properties to initialize the IdP client.
Properties properties = new Properties();
properties.put(IdPClient.IDP_SERVER_URL, "URL");
properties.put(IdPClient.IDP_CLIENT_CERTIFICATE_ISSUER, "URL");
properties.put(IdPClient.IDP_CLIENT_KEYSTORE_PATH, "JKS file path");
properties.put(IdPClient.IDP_CLIENT_KEYSTORE_PASSKEY, "JKS passkey");
properties.put(IdPClient.IDP_CLIENT_KEYSTORE_ALIAS, "Certificate alias");
// Get the IdP client factory singleton instance
//with the specified parameters.
IdPClientFactory clientFactory = IdPClientFactory.getInstance(properties);
// Get the partition specific client facade to do the assertion.
IdPClientFacade clientFacade = clientFactory.getIdPClientFacade(partition);
// Establish SSO Login with the IdP server
IdPClientToken token = clientFacade.doIdPLogin(clientId, forUserId, spId);
Le jeton obtenu peut être transmis aux fournisseurs de services cible pour accéder à leurs ressources en fonction des rôles et des droits de l'utilisateur mappé.
// Security token is validated at Service Provider side.
IdPClientAssertion assertion = spFacade.assertIdPToken(clientId, forUserId, spId,
token.getTokenId());
// Retrieve the principal from the assertion, if there is no exception.
String principal = assertion.getMappedUser();
La façade client accepte les services partagés et peut être utilisée pour configurer chaque partition séparément. Pour utiliser cette fonction, ajoutez l'ID client à chaque nom de propriété. Par exemple :
properties.put(IdPClient.IDP_CLIENT_KEYSTORE_PATH +
".partition1", "JKS file path");
properties.put(IdPClient.IDP_CLIENT_KEYSTORE_PASSKEY +
".partition1", "JKS passkey");
properties.put(IdPClient.IDP_CLIENT_KEYSTORE_ALIAS +
".partition1", "Certificate alias");