Verwenden der IdP-Clientfassade zum Generieren von Tokens und Übergeben der Tokens an Service-Provider
Wenn ein Benutzer authentifiziert wurde und auf die Services eines anderen SP zugreifen möchte, rufen Sie den folgenden Code auf SP-Seite auf.
Warum und wann dieser Vorgang ausgeführt wird
Der Code generiert das folgende Token.
// 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);
Nachdem das Token abgerufen wurde, kann es an die Ziel-SPs übergeben werden, um basierend auf den dem Benutzer zugeordneten Rollen und Berechtigungen auf deren Ressourcen zuzugreifen.
// 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();
Die Clientfassade beachtet Multi-Tenant-Objekte und kann für die separate Konfiguration jeder Partition verwendet werden. Um dieses Feature zu verwenden, hängen Sie die Client-ID an jeden Eigenschaftsnamen an. Beispiel:
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");