/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cxf.sts;
import java.util.List;
import javax.security.auth.callback.CallbackHandler;
import org.apache.cxf.sts.service.EncryptionProperties;
import org.apache.cxf.sts.token.realm.Relationship;
import org.apache.cxf.sts.token.realm.RelationshipResolver;
import org.apache.cxf.sts.token.realm.SAMLRealmCodec;
import org.apache.cxf.ws.security.sts.provider.STSException;
import org.apache.wss4j.common.crypto.Crypto;
/**
* This MBean represents the properties associated with the STS. It contains a single operation
* "configureProperties()" which allows subclasses to perform any custom loading/processing of the
* properties.
*/
public interface STSPropertiesMBean {
/**
* Load/process the CallbackHandler, Crypto objects, etc.
*/
void configureProperties() throws STSException;
/**
* Set the CallbackHandler object.
* @param callbackHandler the CallbackHandler object.
*/
void setCallbackHandler(CallbackHandler callbackHandler);
/**
* Get the CallbackHandler object.
* @return the CallbackHandler object.
*/
CallbackHandler getCallbackHandler();
/**
* Set the signature Crypto object
* @param signatureCrypto the signature Crypto object
*/
void setSignatureCrypto(Crypto signatureCrypto);
/**
* Get the signature Crypto object
* @return the signature Crypto object
*/
Crypto getSignatureCrypto();
/**
* Set the username/alias to use to sign any issued tokens
* @param signatureUsername the username/alias to use to sign any issued tokens
*/
void setSignatureUsername(String signatureUsername);
/**
* Get the username/alias to use to sign any issued tokens
* @return the username/alias to use to sign any issued tokens
*/
String getSignatureUsername();
/**
* Set the encryption Crypto object
* @param encryptionCrypto the encryption Crypto object
*/
void setEncryptionCrypto(Crypto encryptionCrypto);
/**
* Get the encryption Crypto object
* @return the encryption Crypto object
*/
Crypto getEncryptionCrypto();
/**
* Set the username/alias to use to encrypt any issued tokens. This is a default value - it
* can be configured per Service in the ServiceMBean.
* @param encryptionUsername the username/alias to use to encrypt any issued tokens
*/
void setEncryptionUsername(String encryptionUsername);
/**
* Get the username/alias to use to encrypt any issued tokens. This is a default value - it
* can be configured per Service in the ServiceMBean
* @return the username/alias to use to encrypt any issued tokens
*/
String getEncryptionUsername();
/**
* Set the EncryptionProperties to use.
* @param encryptionProperties the EncryptionProperties to use.
*/
void setEncryptionProperties(EncryptionProperties encryptionProperties);
/**
* Get the EncryptionProperties to use.
* @return the EncryptionProperties to use.
*/
EncryptionProperties getEncryptionProperties();
/**
* Set the STS issuer name
* @param issuer the STS issuer name
*/
void setIssuer(String issuer);
/**
* Get the STS issuer name
* @return the STS issuer name
*/
String getIssuer();
/**
* Set the SignatureProperties to use.
* @param signatureProperties the SignatureProperties to use.
*/
void setSignatureProperties(SignatureProperties signatureProperties);
/**
* Get the SignatureProperties to use.
* @return the SignatureProperties to use.
*/
SignatureProperties getSignatureProperties();
/**
* Set the RealmParser object to use.
* @param realmParser the RealmParser object to use.
*/
void setRealmParser(RealmParser realmParser);
/**
* Get the RealmParser object to use.
* @return the RealmParser object to use.
*/
RealmParser getRealmParser();
/**
* Set the IdentityMapper object to use.
* @param identityMapper the IdentityMapper object to use.
*/
void setIdentityMapper(IdentityMapper identityMapper);
/**
* Get the IdentityMapper object to use.
* @return the IdentityMapper object to use.
*/
IdentityMapper getIdentityMapper();
/**
* Set the list of Relationship objects to use.
* @param relationships the List<Relationship> object to use.
*/
void setRelationships(List<Relationship> relationships);
/**
* Get the list of Relationship objects to use.
* @return the List<Relationship> object to use.
*/
List<Relationship> getRelationships();
/**
* Get the RelationshipResolver objects to use.
* @return the RelationshipResolver object to use.
*/
RelationshipResolver getRelationshipResolver();
/**
* Get the SAML Realm Codec object to use.
* @return the SAMLRealmCodec object to use.
*/
SAMLRealmCodec getSamlRealmCodec();
/**
* Set the SAML Realm Codec object to use.
* @param samlRealmCodec the SAMLRealmCodec object to use.
*/
void setSamlRealmCodec(SAMLRealmCodec samlRealmCodec);
/**
* Get whether to validate a client Public Key or Certificate presented as part of a
* UseKey element. This is true by default.
*/
boolean isValidateUseKey();
/**
* Set whether to validate a client Public Key or Certificate presented as part of a
* UseKey element. If this is set to true (the default), the public key must be trusted
* by the Signature Crypto of the STS.
*
* @param validateUseKey whether to validate a client UseKey or not.
*/
void setValidateUseKey(boolean validateUseKey);
}