|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ICredentialProvider
is an interface for retrieving the username and password
for a backend application that were sent to the portlet in the headers. It provides
methods for configuring the credential location and type if a config file cannot be
used. In most cases a config file should be used, and the values in the config file
will override anything set via the set methods in this interface.
ICredentialProvider
allows a portlet developer to retrieve the username and
password from the headers in 3 lines of code, no matter how that information is being
passed. It also allows: the method of credential passing to change, switching from basic
auth to a preference value, upgrading from a 5.0.x Portal to a 6.0.x Portal, making use
of the Plumtree Credential Vault, changing encryption methods, or even changing the
encryption key; without ever having to change your code or re-compile. Only settings
in the web.xml file would need to be updated.
The following example code shows how easy it is to retrieve the username and password
when using a config file:
// Get an ICredentialProvider instance from the IPortletContext IPortletContext portletContext = PortletContextFactory.createPortletContext(req, resp); ICredentialProvider cProvider = portletContext.getCredentialProvider(); // get the username and password String username = cProvider.getUsername(); String password = cProvider.getPassword();Even in the case where a config file cannot be used, using
ICredentialProvider
can
still save a developer from having to deal with his/her own cipher utilities.
Extracting the username and password when they are passed from the Credential Vault
in version 6.0.x still requires very few lines of code, as illustrated in the following
example code:
// Get an ICredentialProvider instance from the IPortletContext IPortletContext portletContext = PortletContextFactory.createPortletContext(req, resp); ICredentialProvider cProvider = portletContext.getCredentialProvider(); // set the RSA private key used to decrypt the password; this value could // normally be read from the config file cProvider.setPrivateKey(rsaPrivateKeyString); // get the username and password String username = cProvider.getUsername(); String password = cProvider.getPassword();When a developer is working with a 5.0.x Portal without the Credential Vault, it is necessary to configure all the parameters that indicate how the credentials are being passed to the portlet. The following example code retrieves the username and password when they are being sent as user prefs with the parameter names DCTMUsername and DCTMPassword, and the password is RC2 encrypted:
// Get an ICredentialProvider instance from the IPortletContext IPortletContext portletContext = PortletContextFactory.createPortletContext(req, resp); ICredentialProvider cProvider = portletContext.getCredentialProvider(); // set the header type and parameter names; these values could normally be // read from the config file cProvider.setCredentialSettingType(SettingType.User); cProvider.setUsernameParameterName("DCTMUsername"); cProvider.setPasswordParameterName("DCTMPassword"); // set the encryption type and key; these values could normally be // read from the config file cProvider.setCredentialEncryptionType(EncryptionType.RC2); cProvider.setPrivateKey("skiroblbpauwyryrhfvnmsl"); // get the username and password String username = cProvider.getUsername(); String password = cProvider.getPassword();
Method Summary | |
CredentialSource |
getCredentialSource()
Returns the source of the credentials as a CredentialSource object. |
java.lang.String |
getPassword()
Returns the decrypted password for a backend application. |
java.lang.String |
getUsername()
Returns the username for a backend application. |
void |
setCredentialEncryptionType(EncryptionType type)
Specify the type of encryption used to encrypt the password that was sent to the portlet. |
void |
setCredentialSettingType(SettingType type)
Specify what type of setting is being used to pass the credentials to the portlet. |
void |
setPasswordParameterName(java.lang.String paramName)
Specify the name of the setting that contains the password for the backend application. |
void |
setPrivateKey(java.lang.String key)
Specify the private key to use to decrypt the encrypted password that was sent to the portlet. |
void |
setUsernameParameterName(java.lang.String paramName)
Specify the name of the setting that contains the username for the backend application. |
Method Detail |
public java.lang.String getUsername()
public java.lang.String getPassword()
public void setCredentialSettingType(SettingType type)
type
- the type of setting being used to send credentials to the portlet.public void setUsernameParameterName(java.lang.String paramName)
paramName
- name of the username setting.public void setPasswordParameterName(java.lang.String paramName)
paramName
- name of the password setting.public void setCredentialEncryptionType(EncryptionType type)
type
- type of encryption.public void setPrivateKey(java.lang.String key)
CredentialEncryptionType
must be set with the
setCredentialEncryptionType
method. This value will only be
used if it is not specified in a config file (web.xml). A
config file setting will override anything set with this method.
The config file parameter for this setting depends on the type of encryption being
used, and can be one of: RSAPrivateKey, RC2PrivateKey, or AESPrivateKey.
key
- key used for RSA decryption.public CredentialSource getCredentialSource()
CredentialSource
object.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright ©2007 BEA Systems, Inc. All Rights Reserved.