Oracle® Fusion Middleware Administrator's Guide for Oracle SOA Suite and Oracle Business Process Management Suite 11g Release 1 (11.1.1.5.0) Part Number E10226-08 |
|
|
View PDF |
This chapter describes security procedures unique to SOA composite applications.
This chapter includes the following topics:
Section 6.1, "Introduction to Securing SOA Composite Applications"
Section 6.2, "Configuring Oracle HTTP Server with Oracle BPM Worklist"
Section 6.3, "Setting up SAML Message-Protected Policy Configuration for the SOA Infrastructure"
Section 6.7, "Configuring Security for Human Workflow WSDL Files"
Note:
See the following sections for information on attaching and detaching policies:This chapter describes security procedures unique to SOA composite applications. Most SOA composite application security procedures do not require SOA-unique steps and can be performed by following the documentation listed in Table 6-1.
Table 6-1 Security Documentation
For Information On... | See The Following Guide... |
---|---|
Securing Oracle Fusion Middleware, including Oracle Single Sign-On (OSSO) configuration |
|
Securing and administering web services |
Oracle Fusion Middleware Security and Administrator's Guide for Web Services |
Understanding Oracle WebLogic Server security |
Oracle Fusion Middleware Understanding Security for Oracle WebLogic Server |
Securing an Oracle WebLogic Server production environment |
Oracle Fusion Middleware Securing a Production Environment for Oracle WebLogic Server |
Securing Oracle WebLogic Server |
|
Developing new security providers for use with Oracle WebLogic Server |
Oracle Fusion Middleware Developing Security Providers for Oracle WebLogic Server |
Securing web services for Oracle WebLogic Server |
Oracle Fusion Middleware Securing WebLogic Web Services for Oracle WebLogic Server |
Programming security for Oracle WebLogic Server |
Oracle Fusion Middleware Programming Security for Oracle WebLogic Server |
You must add the /integration
location in the mod_wl_ohs.conf
file of Oracle HTTP Server for Oracle BPM Worklist to work through Oracle HTTP Server.
<Location /integration>
SetHandler weblogic-handler
# PathTrim /weblogic
ErrorPage http:/WEBLOGIC_HOME:WEBLOGIC_PORT/
</Location>
This section describes how to set up and validate Security Assertion Markup Language (SAML) message-protected policy configuration for the SOA Infrastructure with the WebLogic Scripting Tool (WLST). The example in this section describes task query service configuration. However, these instructions are relevant to all human workflow services that support SAML-token ports:
AG query service
AG metadata service
AG admin service
Task query service
Task service
Task metadata service
Runtime config service
Task evidence service
User metadata service
If you want to change the policy for another service, you must apply the same WLST commands to that service's SAML-token port.
To set up an SAML message-protected policy configuration:
Log in to the SOA domain (for example, named base_domain
) using WLST.
Detach the existing out-of-the-box service policy named wss10_saml_token_service_policy
.
wls:/base_domain/domainRuntime> detachWebServicePolicy('/base_domain/soa _server1/soa-infra','integration/services/TaskQueryService','web', 'WorkflowProvider','TaskQueryServicePortSAML','oracle/ wss10_saml_token_service_policy')
Restart the application to activate any policy or configuration change.
Attach the new policy. In this case, the policy is named oracle/wss10_saml_token_with_message_protection_service_policy
.
wls:/base_domain/domainRuntime> attachWebServicePolicy('/base_domain/soa _server1/soa-infra','integration/services/TaskQueryService', 'web','WorkflowProvider','TaskQueryServicePortSAML','ora cle/wss10_saml_token_with_message_protection_service_policy')
Restart the application to activate any policy or configuration change.
List the policy to validate.
wls:/base_domain/domainRuntime> listWebServicePolicies('/base_domain/soa _server1/soa-infra','integration/services/TaskQueryService', 'web','WorkflowProvider','TaskQueryServicePortSAML') TaskQueryServicePortSAML : security : oracle/wss10_saml_token_with_message_protection_service_policy, enabled=true Attached policy or policies are valid; endpoint is secure.
Create a keystore, add the orakey
alias, and run the Oracle Web Service Manager (OWSM) configuration to activate the SAML message-protected policy. For example:
keytool -genkeypair -keystore domain_home/config/fmwconfig/default-keystore.jks -keyalg RSA -dname "cn=consumer,dc=example,dc=com" -alias clientalias -keypass password -storepass password -validity 3600 keytool -exportcert -keystore domain_home/config/fmwconfig/default-keystore.jks -v -alias clientalias -storepass password -rfc -file domain_home/config/fmwconfig/certificate.cer keytool -importcert -keystore domain_home/config/fmwconfig/default-keystore.jks -alias orakey -file domain_home/config/fmwconfig/certificate.cer -storepass password createCred(map="oracle.wsm.security", key="keystore-csf-key", user="owsm", password="welcome1", desc="Keystore key") createCred(map="oracle.wsm.security", key="enc-csf-key", user="clientalias", password="welcome1", desc="Encryption key") createCred(map="oracle.wsm.security", key="sign-csf-key", user="clientalias", password="welcome1", desc="Signing key")
Restart the servers.
This section describes how to authenticate Oracle BPM Worklist and Oracle Business Process Management users in different environments.
In order to be automatically authenticated when accessing a second Oracle BPM Worklist from a first Oracle BPM Worklist in SAML SSO environments, you must perform the following steps. Otherwise, you are prompted to log in again when you access the second Oracle BPM Worklist. In these environments, the first Oracle BPM Worklist is configured as the SAML identity provider and the second Oracle BPM Worklist that you are attempting to access is configured as the SAML service provider.
To automatically authenticate Oracle BPM Worklist users in SAML SSO environments:
Add /integration/worklistapp/*
as the redirect URL for worklistapp
to the SAML service provider site's SAML2IdentityAsserter
configuration as follows.
In the Oracle WebLogic Server Administration Console, select Security Realms.
Click the realms for the service providers.
Select the Providers tab, and then the Authentication subtab.
From the provider list, select the provider with the description SAML 2.0 Identity Assertion Provider.
If you do not see the SAML identity assertion provider configuration, follow the instructions in Oracle Fusion Middleware Securing Oracle WebLogic Server.
Select the Management tab.
Under the Management tab, you can see a list of identity provider partners. These are hosts that have been configured as the SAML identity provider partners for this SAML identity service provider site. Remember that this configuration step is performed on the identity service provider site on which the worklist application is hosted.
Select the identity provider site where you want the user to perform the initial login.
Scroll down the page until you see the field Redirect URIs.
Add /integration/worklistapp/*
to the list.
After performing this step, you can log in to Oracle BPM Worklist at the SAML identity provider site though the regular URL of/integration/worklistapp
. If necessary, you can then navigate to the URL /integration/worklistapp/ssologin
at the SAML service provider site, where you gain access to Oracle BPM Worklist and are automatically authenticated.
For more information on SAML2IdentityAsserter
and configuring SSO with web browsers and HTTP clients, see Oracle Fusion Middleware Securing Oracle WebLogic Server.
For Windows native authentication through Kerberos to work with Oracle BPM Worklist, you must use the /integration/worklistapp/ssologin
protected URL. For example, after configuring Windows native authentication, you access Oracle BPM Worklist as follows:
http://host_name.domain_name:8001/integration/worklistapp/ssologin
For information on configuring SSO with Microsoft clients, see Oracle Fusion Middleware Securing Oracle WebLogic Server.
For Windows native authentication through Kerberos to work with Oracle Business Process Management Process Composer, you must use the bpm/composer/ssologin
protected URL. For example, after configuring Windows native authentication, you access Process Composer as follows:
http://host_name.domain_name:8001/bpm/composer/ssologin
For information on configuring SSO with Microsoft clients, see Oracle Fusion Middleware Securing Oracle WebLogic Server.
This section describes how to set the first authentication provider.
The Oracle BPM Worklist and workflow services use Java Platform Security (JPS) and the User and Role API. For this reason, the Oracle Internet Directory authenticator must be the first provider listed when workflow is used with Oracle Internet Directory. If Oracle Internet Directory is not listed first (for example, it is listed below DefaultAuthenticator
), login authentication fails.
For information about changing the order of authentication providers, see Oracle Fusion Middleware Securing Oracle WebLogic Server.
Logins to web-based applications may fail when using Oracle Internet Directory authentication. This is caused when the Oracle WebLogic Server configuration is set to use the Oracle Internet Directory authentication before default authentication.
This may produce the following error:
"@ User "weblogic" is not found in configuration "jazn.com" Check if the user exists in the repository specified by the configurations. Check the error stack and fix the cause of the error. Contact oracle support if error is not fixable."
The order of the security providers should be:
Default authentication
Oracle Internet Directory/LDAP authentication
This section describes configuring SSL in Oracle SOA Suite and Oracle Business Process Management environments.
As a best practice, Oracle recommends that you configure either all managed servers or no managed servers with SSL (SOA, BAM, and so on). Configuring some managed servers with SSL, while not configuring others, may lead to undesirable results in Oracle BPM Worklist and Oracle Web Services Manager (OWSM). For example, if there is an SSL-configured managed server (bam_server), servers not configured with SSL are not be used by OWSM. In cases in which an SSL-configured server is down, it causes OWSM to be in a down state, which in turn causes Oracle BPM Worklist to be in a down state.
Switching from non-SSL to SSL configurations with Oracle BPM Worklist requires the Frontend Host and Frontend HTTPS Port fields to be set in Oracle WebLogic Server Administration Console. Not doing so results in exception errors when you attempt to create to-do tasks.
To switch from non-SSL to SSL configurations with Oracle BPM Worklist:
Log in to Oracle WebLogic Server Administration Console.
In the Environment section, select Servers.
Select the name of the managed server (for example, soa_server1).
Select Protocols, then select HTTP.
In the Frontend Host field, enter the hostname on which Oracle BPM Worklist is located.
In the Frontend HTTPS Port field, enter the SSL listener port.
Click Save.
Oracle SOA Suite uses both Oracle WebLogic Server and Sun Secure Socket Layer (SSL) stacks for two-way SSL configurations.
For the inbound web service bindings, Oracle SOA Suite uses the Oracle WebLogic Server infrastructure and, therefore, the Oracle WebLogic Server libraries for SSL.
For the outbound web service bindings, Oracle SOA Suite uses JRF HttpClient and, therefore, the Sun JDK libraries for SSL.
Due to this difference, start Oracle WebLogic Server with the following JVM option.
To configure SOA composite applications for two-way SSL communication:
Open the following file:
On UNIX operating systems, open $MIDDLEWARE_HOME/user_projects/domains/
domain_name
/bin/setDomainEnv.sh
.
On Window operating systems, open MIDDLEWARE_HOME
\user_projects\domains\
domain_name
\bin\setDomainEnv.bat
.
Add the following lines in the JAVA_OPTIONS
section, if the server is enabled for one-way SSL (server authorization only):
-Djavax.net.ssl.trustStore=your_truststore_location
For two-way SSL, the keystore information (location and password) is not required.
In addition, perform the following steps to enable two-way SSL for a SOA composite application to invoke another SOA composite application or another non-SOA application.
Note:
Both the server and client are assumed to have been configured for SSL with mutual authentication.To enable two-way SSL for a SOA composite application to invoke another application:
On the client side, provide the keystore location.
From the SOA Infrastructure menu, select SOA Administration > Common Properties.
At the bottom of the page, click More SOA Infra Advanced Configuration Properties.
Click KeystoreLocation.
In the Value column, enter the keystore location.
Click Apply.
Click Return.
During design time in Oracle JDeveloper, update the reference section in the composite.xml
file with the oracle.soa.two.way.ssl.enabled
property.
<reference name="Service1"
ui:wsdlLocation=". . .">
<interface.wsdl interface=". . ."/>
<binding.ws port=". . .">
<property name="oracle.soa.two.way.ssl.enabled">true</property>
</binding.ws>
</reference>
In Oracle Enterprise Manager Fusion Middleware Control, select WebLogic Domain > domain_name.
Right-click domain_name and select Security > Credentials.
Click Create Map.
In the Map Name field, enter a name (for example, SOA
), and click OK.
Click Create Key.
Enter the following details.
Field | Description |
---|---|
Select Map | Select the map created in Step 6 (for this example, SOA). |
Key | Enter the key name (KeystorePassword is the default). |
Type | Select Password. |
User Name | Enter the keystore user name (KeystorePassword is the default). |
Password | Enter the password that you created for the keystore. |
Note:
When you set up SSL in Oracle WebLogic Server, a key alias is required. You must entermykey
as the alias value. This value is required.Set the keystore location in Oracle Enterprise Manager Fusion Middleware Control. See Step 1 for instructions.
Modify the composite.xml
syntax to use https
and sslport
to invoke a SOA composite application. For example, change the syntax shown in bold:
<?xml version="1.0" encoding="UTF-8" ?> <!-- Generated by Oracle SOA Modeler version 1.0 at [4/1/09 11:01 PM]. --> <composite name="InvokeEchoBPELSync" revision="1.0" label="2009-04-01_23-01-53_994" mode="active" state="on" xmlns="http://xmlns.oracle.com/sca/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy" xmlns:ui="http://xmlns.oracle.com/soa/designer/"> <import namespace="http://xmlns.oracle.com/CustomApps/InvokeEchoBPELSync/BPELProcess1" location="BPELProcess1.wsdl" importType="wsdl"/> <import namespace="http://xmlns.oracle.com/CustomApps/EchoBPELSync/ BPELProcess1"location="http://hostname:port/soa-infra/services/default/EchoBPEL Sync/BPELProcess1.wsdl" importType="wsdl"/>
to use https
and sslport
:
location="https://hostname:sslport/soa-infra/services/default/EchoBPELSync /BPELProcess1.wsdl"
When invoking a web service as an external reference from a SOA composite application in one-way SSL environments, ensure that the certificate name (CN) and the hostname of the server exactly match. This ensures a correct SSL handshake.
For example, if a web service is named adfbc
and the certificate has a server name of myhost05
, the following results in an SSL handshake exception.
<import namespace="/adfbc1/common/" location="https://myhost05.us.oracle.com:8002/CustomApps-adfbc1-context-root/Ap pModuleService?WSDL" importType="wsdl"/> <import namespace="/adfbc1/common/" location="Service1.wsdl" importType="wsdl"/>
If you switch the order of import
, the SSL handshake passes.
<import namespace="/adfbc1/common/" location="Service1.wsdl" importType="wsdl"/> <import namespace="/adfbc1/common/" location="https://myhost05.us.oracle.com:8002/CustomApps-adfbc1-context-root/Ap pModuleService?WSDL" importType="wsdl"/>
Note the following restrictions around this issue:
There are no options for ignoring hostname verification in Oracle JDeveloper as exist with the Oracle WebLogic Server Administration Console. This is because the SSL kit used by Oracle JDeveloper is different. Only the trust store can be configured from the command line. All other certificate arguments are not passed.
In the WSDL file, https://
hostname
must match with that in the certificate, as described above. You cannot perform the same procedures as you can with a browser. For example, if the hostname is myhost05.us.oracle.com
in the certificate's CN, then you can use myhost05
, myhost05.us.oracle.com
, or the IP address from a browser. In Oracle JDeveloper, always use the same name as in the certificate (that is, myhost05.us.oracle.com
).
Follow these steps to configure SSL communication between Oracle SOA Suite and Oracle HTTP Server.
To configure Oracle HTTP server for SSL communication:
Update mod_ssl.conf
with the <Location /integration/services>
location directive.
LoadModule weblogic_module ${ORACLE_HOME}/ohs/modules/mod_wl_ohs.so <IfModule mod_weblogic.c> WebLogicHost host.domain.com WLLogFile <logdir>/ohs_ssl.log Debug ALL DebugConfigInfo ON SecureProxy ON MatchExpression *.jsp WlSSLWallet <OHS_ HOME>/instances/instance1/config/OHS/ohs1/keystores/default </IfModule> <Location /soa-infra> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /b2bconsole> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /b2b> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /integration/worklistapp> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /integration/services> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /DefaultToDoTaskFlow> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /OracleBAM> WebLogicPort 9002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /OracleBAMWS> > WebLogicPort 9002 > SetHandler weblogic-handler > ErrorPage http://host.domain.com:port/error.html > </Location> <Location /sdpmessaging/userprefs-ui/> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location>
Start the Oracle WebLogic Servers as described in Section 6.6.3, "Configuring SOA Composite Applications for Two-Way SSL Communication."
To configure certificates for Oracle Client, Oracle HTTP Server, and Oracle WebLogic Server:
Export the user certificate from the Oracle HTTP Server wallet.
orapki wallet export -wallet . -cert cert.txt -dn 'CN=\"Self-Signed Certificate for ohs1 \",OU=OAS,O=ORACLE,L=REDWOODSHORES,ST=CA,C=US'
Import the above certificate into the Oracle WebLogic Server trust store as a trusted certificate.
keytool -file cert.txt -importcert -trustcacerts -keystore DemoTrust.jks
Export the certificate from the Oracle WebLogic Server trust store.
keytool -keystore DemoTrust.jks -exportcert -alias wlscertgencab -rfc -file certgencab.crt
Import the above certificate to the Oracle HTTP Server wallet as a trusted certificate.
orapki wallet add -wallet . -trusted_cert -cert certgencab.crt -auto_login_only
Restart Oracle HTTP Server.
Restart the Oracle WebLogic Servers as described in Section 6.6.3, "Configuring SOA Composite Applications for Two-Way SSL Communication."
The Test Web Service page in an Oracle WebCache and Oracle HTTP Server environment may require communication back through Oracle WebCache. Therefore, SSL must be configured between the SOA composite application instance and Oracle WebCache (that is, export the user certificate from the Oracle WebCache wallet and import it as a trusted certificate in the Oracle WebLogic Server trust store).
To invoke a SOA composite application from another composite over HTTPS when using a custom trust store created with a tool such as keytool
or orapki
, perform the following actions in Oracle JDeveloper.
To use a custom trust store for one-way SSL during design time:
To fetch a WSDL file in the reference section, set the trust store information in Tools > Preferences > Http Analyzer > HTTPS Setup > Client Trusted Certificate Keystore.
During deployment to an SSL-enabled server, use the JSSE property at the command line:
jdev -J-Djavax.net.ssl.trustStore=your_trusted_location
Assume you create the following environment:
Asynchronous BPEL process A that invokes asynchronous BPEL process B
Asynchronous BPEL process A is deployed to a one-way SSL enabled, managed server
All WSDL reference and bindings use plain HTTP
At runtime, the WSDL is looked for over HTTPS, and the callback message from asynchronous BPEL process B fails.
To resolve this issue, the callbackServerURL
property must be passed at the reference binding level in the composite.xml
file. This explicitly indicates the value of the callback URL for the given reference invocation. If the client composite is running in an SSL-managed server, then the callback defaults to SSL.
<reference name="Service1"
ui:wsdlLocation="http://localhost:8000/soa-infra/services/default/AsyncSecondB
PELMTOM/BPELProcess1.wsdl">
<interface.wsdl
interface="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProcess1#wsdl
.interface(BPELProcess1)"
callbackInterface="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProce
ss1#wsdl.interface(BPELProcess1Callback)"/>
<binding.ws
port="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProcess1#wsdl.endp
oint(bpelprocess1_client_ep/BPELProcess1_pt)"
location="http://localhost:8000/soa-infra/services/default/AsyncSecondBPELMTOM
/bpelprocess1_client_ep?WSDL">
<wsp:PolicyReference URI="oracle/wss_username_token_client_policy"
orawsp:category="security"
orawsp:status="enabled"/>
<wsp:PolicyReference URI="oracle/wsaddr_policy"
orawsp:category="addressing"
orawsp:status="enabled"/>
.
<property name="callbackServerURL">http://localhost:8000/</property>
.
</binding.ws>
.
<callback>
<binding.ws
port="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProcess1#wsdl.endp
oint(bpelprocess1_client_ep/BPELProcess1Callback_pt)">
<wsp:PolicyReference
URI="oracle/wss_username_token_service_policy"
orawsp:category="security"
orawsp:status="enabled"/>
</binding.ws>
</callback>
.
</reference>
If the WSDL files for human workflow services are not exposed to external consumers, then set the flag that exposes the WSDL to false
for each of the services:
<expose-wsdl>false</expose-wsdl>
For more information, see Oracle Fusion Middleware Developer's Guide for Oracle Web Services.