Enabling Trust Between WebLogic Domains
Note: Enabling trust between WebLogic Server domains opens the servers up to man-in-the-middle attacks. Great care should be taken when enabling trust in a production environment. BEA recommends having strong network security such as a dedicated communication channel or protection by a strong firewall.
A trust relationship is established when principals in a Subject from one WebLogic Server domain (referred to as the domain) are accepted as principals in the local domain.
This release of WebLogic Server adds more restrictions to the trust relationship between domains. Now a trust relationship is established when the Credential attribute for one domain matches the Credential attribute for another domain.
By default, when you boot an Administration Server for the first time, the Credential attribute is not defined. As the Administration Server boots, it notices that the Credential attribute is not defined and generates a random credential. The Administration Server uses that credential to sign principals in subjects created in that domain. The config.xml file which stores the credential is saved after the credential is generated. Managed servers in that domain obtain the credential from the Administration Server when booting.
WebLogic Server performs a validation (comparing how the principal was signed with how a local principal would be signed) whenever the code is asked to create a new subject.
Note: Any credentials in clear text are encrypted the next time the config.xml file is persisted to disk.
If you want a WebLogic Server 6.x domain to interoperate with a WebLogic Server 7.0 domain, change the Credential attribute in the WebLogic Server 7.0 domain to the password of the system user in the WebLogic Server 6.x domain.
If you want two 7.0 domains to interoperate, perform the following procedure in both domains.
To establish a trust relationship between WebLogic Server domains:
1. In the left panel of the console, select the domain name at the top of the tree.
2. Select the Security-->Advanced tab.
3. Uncheck the Enable Generated Credential attribute.
4. Click the Change... link in the Credential attribute.
5. Enter a password for the domain. Choose the password carefully. BEA Systems recommends using a combination of upper and lower case letters and numbers.
6. Confirm the password.
7. Click Apply.
8. Reboot WebLogic Server.
When using inter-domain trust with a WebLogic Server domain that uses custom Principals (meaning a custom Authentication provider is configured in the domain), the domain that is not using custom Principals must have the class for the custom Principal defined in the server's class path in order for authentication to work properly. Otherwise, a java.lang.ClassNotFound is thrown.
For example: two domains (Domain 1 and Domain 2) have established trust (meaning their domain credentials are set to the same value).
§ Domain 1 has a custom Authentication provider that creates custom Principals of type myPrincipal.
§ mySubject is a Subject authenticated on Domain 1 that contains a Principal of type myPrincipal.
§ mySubject is passed from Domain 1 to Domain 2. Subjects are passed between domains in the following circumstances:
· When one domain makes an RMI call over T3 to another domain.
· When one domain makes an RMI call over IIOP and CSIv2 cannot be established.
· A Subject is passed as a argument to a user's method.
· When using the JMX Message bridge.
§ Domain 2 must have myPrincipal defined in the server class path or a java.lang.ClassNotFound will be thrown when Domain 2 tries to deserialize the Subject.