Sie können einen JASPIC-Provider entwickeln, um eingehende Webanforderungen mit der Schnittstelle com.ibm.wsspi.security.jaspi.ProviderService, die im Liberty Profile-Server bereitgestellt wird, zu authentifizieren.
Informationen zu diesem Vorgang
Die JSR 196 (Java Specification Request)
für die Spezifikation "Java™ Authentication
SPI for Containers" definiert eine Schnittstelle für Authentifizierungsprovider. Sie müssen Ihren JASPIC-Provider
im Liberty Profile-Server als Benutzerfeature packen. Ihr Feature muss die Schnittstelle com.ibm.wsspi.security.jaspi.ProviderService implementieren.
Vorgehensweise
- Erstellen Sie eine OSGi-Komponente, die einen Service bereitstellt, der die Schnittstelle com.ibm.wsspi.security.jaspi.ProviderService implementiert.
Die Schnittstelle ProviderService definiert die Methode getAuthConfigProvider, die von der Laufzeit des Liberty-Profils aufgerufen wird, um eine Instanz Ihrer JASPIC-Providerklasse abzurufen, die die Schnittstelle
javax.security.auth.message.config.AuthConfigProvider implementiert.
Im folgenden Beispiel werden Annotationen für OSGi Declarative Services verwendet:
@package com.mycompany.jaspi;
import java.util.Map;
import javax.security.auth.message.config.AuthConfigFactory;
import javax.security.auth.message.config.AuthConfigProvider;
import org.osgi.service.component.ComponentContext;
import com.mycompany.jaspi.SampleAuthConfigProvider;
import com.ibm.wsspi.security.jaspi.ProviderService;
@Component(service = { ProviderService.class },
configurationPolicy = ConfigurationPolicy.IGNORE,
immediate = true,
property = { "myPoviderPoperty1=value1",
"myPoviderPoperty2=value2"})
public class SampleJaspiProviderService implements ProviderService {
Map<String, String> configProps = null;
// Diese Methode wird von der Laufzeit des Liberty-Profils aufgerufen,
// um eine AuthConfigProvider-Instanz abzurufen
@Override
public AuthConfigProvider getAuthConfigProvider(Map<String, String>
AuthConfigFactory factory)
{
return new SampleAuthConfigProvider(configProps, factory);
}
protected void activate(ComponentContext cc) {
// Die Konfigurationseigenschaften des Providers können bei Bedarf hier gelesen
// und dann an die AuthConfigProvider-Factory übergeben werden.
// In diesem Beispiel werden die Eigenschaften aus der OSGi-Komponentendefinition
// gelesen.
configProps = (Map<String, String>) cc.getProperties();
}
protected void deactivate(ComponentContext cc) {}
}
- Packen Sie die Komponente zusammen mit Ihrem JASPIC-Authentifizierungsprovider in ein OSGi-Bundle,
das Teil Ihres Benutzerfeatures ist.
- Vergewissern Sie sich, dass Ihr Feature den Inhalt des OSGi-Subsystems einschließt:
com.ibm.websphere.appserver.jaspic-1.1; type="osgi.subsystem.feature".
- Nachdem das Feature im Verzeichnis der benutzerspezifischen Produkterweiterung installiert ist,
konfigurieren Sie die Datei server.xml mit dem Featurenamen. Beispiel:
<featureManager>
...
<feature>usr:myJaspiProvider</feature>
</featureManager>