{"id":4179,"date":"2012-01-25T00:48:59","date_gmt":"2012-01-25T05:48:59","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=4179"},"modified":"2012-07-19T14:04:17","modified_gmt":"2012-07-19T19:04:17","slug":"weblogic11g-saml1-1","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=4179","title":{"rendered":"WebLogic11g: Single Sign On with SAML1.1"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Setup_a_New_Security_Realm\">Setup a New Security Realm<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_and_Configure_a_New_Security_Realm\">Add and Configure a New Security Realm<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Change_Default_Realm\">Change Default Realm<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Setup_SSL\">Setup SSL<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_New_User\">Add New User<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Configure_Source_Site\">Configure Source Site<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Setup_SAMLCredentialMapperV2\">Setup SAMLCredentialMapperV2<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Setup_Relying_Parties\">Setup Relying Parties<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Configure_SAML_1.1_Source_Side_Federation_Services\">Configure SAML 1.1 Source Side Federation Services<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Configure_Destination_Site\">Configure Destination Site<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Import_Source_Site_Certificate\">Import Source Site Certificate<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Configure_Asserting_Party_Properties\">Configure Asserting Party Properties<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Configure_SAML_1.1_Destination_Side_Federation_Services\">Configure SAML 1.1 Destination Side Federation Services<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Add_a_New_SAML_Identity_Assertion_Provider\">Add a New SAML Identity Assertion Provider<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Enable_Virtual_Users\">Enable Virtual Users<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Enable_Allow_Virtual_Users\">Enable Allow Virtual Users<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Enable_Group_Attributes\">Enable Group Attributes<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Test\">Test<\/a>\n\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Turn_on_Debugging\">Turn on Debugging<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Test_SSO\">Test SSO<\/a>\n\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Access_appA_First\">Access appA First<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Access_appB_First\">Access appB First<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Issues\">Issues<\/a>\n\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#LoginException_while_asserting_identity_returning_SC_FORBIDDEN\">LoginException while asserting identity, returning SC_FORBIDDEN<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Error_403--Forbidden\">Error 403--Forbidden<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#References\">References<\/a>\n\t\t\t\t\t<\/li>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<p>* This is the note I took following the steps to setup SAML1.1 SSO solution as described in the references.<br \/>\n* I used two Oracle virtual boxes downloaded from <a href=\"http:\/\/www.oracle.com\/technetwork\/middleware\/weblogic\/downloads\/weblogic-developer-vm-303434.html\">here<\/a>.<br \/>\n* I named one virtual box <strong>wlbox1<\/strong> and function as IdP (i.e. SAML Provider) and the other <strong>wlbox<\/strong> as SP (i.e.SAML consumer). <\/p>\n<span id=\"Setup_a_New_Security_Realm\"><h2>Setup a New Security Realm<\/h2><\/span>\n<p>* This needs to be done on <strong>both <\/strong>SAML 1.1 source and destination sites.<\/p>\n<span id=\"Add_and_Configure_a_New_Security_Realm\"><h3>Add and Configure a New Security Realm<\/h3><\/span>\n<p>* Add a new realm: <strong>saml11realm<\/strong><br \/>\n* Add a new Authentication Provider: <strong>saml11DefAuthP<\/strong>; set type to <em>DefaultAuthenticator<\/em>.<br \/>\n* Add a new Authentication Provider: <strong>saml11DefIdAsserter<\/strong>; set type to <em>DefualtIdentityAsserter<\/em>; Set its Active Types to <em>AuthenticatedUser<\/em><br \/>\n* Add a new Password Validation: <strong>saml11SysPassVal<\/strong>; set type to <em>SystemPasswordValidator<\/em><br \/>\n* Add a new XACML Authorization Provider: <strong>saml11XACMLAuthorizer<\/strong>; set type to <em>XACMLAuthorizer<\/em><br \/>\n* Add a new Adjudicator: <strong>saml11DefAdj<\/strong>; set type to <em>DefaultAdjudicator<\/em><br \/>\n* Add a new XACML Role Mapper: <strong>saml11XACMLRoleMapper<\/strong>; set type to <em>XACMLRoleMapper<\/em><br \/>\n* Add a new Auditing Provider: <strong>saml11DefAuditP<\/strong>; set type to <em>DefualtAuditor<\/em><br \/>\n* Add a new SAMLCredentialMapperV2: <strong>saml11CredMapperv2<\/strong>; set type to <em>XAMLCredentialMapperV2<\/em><br \/>\n* Add a new Certification Path: select type <em>WebLogicCertPathProvider<\/em>; name: <strong>saml11WLCertPath<\/strong>; <strong>check <\/strong><em>Current Builder<\/em><\/p>\n<span id=\"Change_Default_Realm\"><h3>Change Default Realm<\/h3><\/span>\n<p>* Set default realm to <em>saml11realm<\/em>: <em>domain > Security > General > Default realm<\/em><br \/>\n* Backup <strong>config.xml<\/strong> and <strong>restart<\/strong> WebLogic<\/p>\n<span id=\"Setup_SSL\"><h3>Setup SSL<\/h3><\/span>\n<p>* See <a href=\"?p=4169\">this post<\/a><\/p>\n<span id=\"Add_New_User\"><h3>Add New User<\/h3><\/span>\n<p>* Add a new user: <strong>ssouser<\/strong>\/<strong>welcome1<\/strong><\/p>\n<span id=\"Configure_Source_Site\"><h2>Configure Source Site<\/h2><\/span>\n<p>* The source site uses SAML Credential Mapper V2 to produce SAML assertions<\/p>\n<span id=\"Setup_SAMLCredentialMapperV2\"><h3>Setup SAMLCredentialMapperV2<\/h3><\/span>\n<p>* Go to <em>domain > Security Realms > saml11realm > Providers > Credential Mapping > saml11CredMapperv2 > Configuration > Provider Specific<\/em><br \/>\n* Click<em> Lock &#038; Edit<\/em> and enter:<br \/>\n&#8211; Issuer URI: <strong>http:\/\/saml11realm.com\/saml11<\/strong><br \/>\n&#8211; Name Qualifier: <strong>saml11realm.com<\/strong><br \/>\n&#8211; Default Time To Live: <strong>120<\/strong><br \/>\n&#8211; Default Time To Live Offset: <strong>5<\/strong><br \/>\n&#8211; Signing Key Alias: <strong>wlbox1<\/strong><br \/>\n&#8211; Signing Key Pass Phrase: <strong>secret<\/strong><br \/>\n* Click <em>Save <\/em>and <em>Activate Change<\/em><\/p>\n<span id=\"\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2-300x235.jpg\" alt=\"\" title=\"wls_saml11_src_credMapperv2\" width=\"300\" height=\"235\" class=\"aligncenter size-medium wp-image-4680\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2-300x235.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2.jpg 714w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Setup_Relying_Parties\"><h3>Setup Relying Parties<\/h3><\/span>\n<p>* Go to <em>Security Realms > saml11realm > Providers > Credential Mapping > saml11CredMapperv2 >Management > Relying Parties > New<\/em><br \/>\n&#8211; Profile: <em>Browser\/POST<\/em><br \/>\n&#8211; Description: <strong>demoSAML<\/strong><br \/>\n* Click newly created relying party, i.e. <em>rp_00001<\/em>, and enter:<br \/>\n&#8211; Enabled: <strong>true<\/strong><br \/>\n&#8211; Target URL: <strong>http:\/\/wlbox:7001\/appB\/admin\/services.jsp<\/strong><br \/>\n&#8211; Assertion Consumer URL: <strong>https:\/\/wlbox:7002\/samlacs\/acs<\/strong><br \/>\n&#8211; Assertion Consumer Parameters: <strong>APID=ap_00001<\/strong><br \/>\n&#8211; Assertion Time To Live: <strong>120<\/strong><br \/>\n&#8211; Assertion Time To Live Offset: <strong>-5<\/strong><br \/>\n&#8211; Sign Assertions: <strong>checked<\/strong><br \/>\n&#8211; Include Keyinfo: <strong>checked<\/strong><br \/>\n* Click <em>Save<\/em><\/p>\n<span id=\"_1\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001-225x300.jpg\" alt=\"\" title=\"wls_saml11_src_credMapperv2_rp00001\" width=\"225\" height=\"300\" class=\"aligncenter size-medium wp-image-4679\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001-225x300.jpg 225w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001.jpg 685w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/a><\/h6><\/span>\n<span id=\"Configure_SAML_1.1_Source_Side_Federation_Services\"><h3>Configure SAML 1.1 Source Side Federation Services<\/h3><\/span>\n<p>* Go to <em>domain > Environment > Servers > examplesServer > Configuration > Federation Services > SAML 1.1 Source Site<\/em><br \/>\n* Click <em>Lock &#038; Edit<\/em> and enter:<br \/>\n&#8211; Source Site Enabled: <strong>true<\/strong><br \/>\n&#8211; Source Site URL: <strong>http:\/\/wlbox1:7001\/appA<\/strong><br \/>\n&#8211; Signing Key Alias: <strong>wlbox1<\/strong><br \/>\n&#8211; Signing Key Passphrase: <strong>secret<\/strong><br \/>\n&#8211; Intersite Transfer URIs:<\/p>\n<pre lang=\"bash\">\r\n\/samlits_ba\/its\r\n\/samlits_ba\/its\/post\r\n\/samlits_ba\/its\/artifact\r\n\/samlits_cc\/its\r\n\/samlits_cc\/its\/post\r\n\/samlits_cc\/its\/artifact\r\n<\/pre>\n<p>* ITS Requires SSL: <strong>checked<\/strong><br \/>\n* Assertion Retrieval URIs:<\/p>\n<pre lang=\"bash\">\r\n\/samlars\/ars\r\n<\/pre>\n<p>* ARS Requires SSL: <strong>checked<\/strong><br \/>\n* Click <em>Save <\/em>and <em>Activate Changes<\/em><\/p>\n<span id=\"_2\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_fed_svc.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_fed_svc-188x300.jpg\" alt=\"\" title=\"wls_saml11_src_fed_svc\" width=\"188\" height=\"300\" class=\"aligncenter size-medium wp-image-4677\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_fed_svc-188x300.jpg 188w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_fed_svc.jpg 582w\" sizes=\"auto, (max-width: 188px) 100vw, 188px\" \/><\/a><\/h6><\/span>\n<span id=\"Configure_Destination_Site\"><h2>Configure Destination Site<\/h2><\/span>\n<p>* Uses <em>SAML Identity Assertion Provider V2<\/em> to consume SAML 1.1 identity assertions to allow SAML SSO.<\/p>\n<span id=\"Import_Source_Site_Certificate\"><h3>Import Source Site Certificate<\/h3><\/span>\n<p>* Copy source site (wlbox1) signing certificate to destination site (wlbox)<\/p>\n<pre lang=\"bash\">\r\ncd ~\/identity\r\n[oracle@wlbox identity]$ ls\r\ncacert.pem  wlbox1.pem  wlbox.keystore  wlbox.truststore\r\n<\/pre>\n<p>* Add a new SAMLIdentityAsserterV2: <strong>saml11SAMLIdA<\/strong><br \/>\n* <strong>Restart <\/strong>WebLogic<br \/>\n* Go to <em>domain > Security Realms > saml11realm > Providers > Authentication > saml11SAMLIdA > Management > Certificate<\/em><br \/>\n* Click <em>New <\/em>and enter<br \/>\n&#8211; Alias: <strong>cacert<\/strong><br \/>\n&#8211; Path: <strong>\/home\/oracle\/identity\/cacert.pem<\/strong><br \/>\n* Click <em>New <\/em>and enter<br \/>\n&#8211; Alias: <strong>wlbox1<\/strong><br \/>\n&#8211; Path: <strong>\/home\/oracle\/identity\/wlbox1.pem<\/strong><br \/>\n* Click <strong>OK<\/strong><\/p>\n<span id=\"_3\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_certs.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_certs-300x153.jpg\" alt=\"\" title=\"wls_saml11_tgt_IdA_certs\" width=\"300\" height=\"153\" class=\"aligncenter size-medium wp-image-4682\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_certs-300x153.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_certs.jpg 749w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Configure_Asserting_Party_Properties\"><h3>Configure Asserting Party Properties<\/h3><\/span>\n<p>* This registers parties whose SAML assertions will be accepted<br \/>\n* Go to <em>domain > Security Realms > saml11realm > Providers > Authentication > saml11SAMLIdA > Management > Asserting Parties<\/em><br \/>\n* Click <strong>New <\/strong>and enter:<br \/>\n&#8211; Profile: <em>Browser\/POST<\/em><br \/>\n&#8211; Description: <strong>demoSAML<\/strong><br \/>\n* Click <strong>Save<\/strong><br \/>\n* Click the newly created asserting party, e.g. ap_00001, and enter:<br \/>\n&#8211; Enabled: <strong>true<\/strong><br \/>\n&#8211; Target URL: <strong>http:\/\/wlbox1:7001\/appA<\/strong>  #Not needed. This is for web services configurations<br \/>\n&#8211; POST Signing Certificate Alias: <strong>wlbox1<\/strong><br \/>\n&#8211; Source Site Redirect URIs: <strong>\/appB\/admin\/services.jsp<\/strong><br \/>\n&#8211; Source Site ITS URL: <strong>https:\/\/wlbox1:7002\/samlits_ba\/its<\/strong><br \/>\n&#8211; Source Site ITS Parameters: <strong>RPID=rp_00001<\/strong><br \/>\n&#8211; Issuer URI: <strong>http:\/\/saml11realm.com\/saml11<\/strong><br \/>\n&#8211; Signature Required: <strong>true<\/strong><br \/>\n&#8211; Asserting Signing Certificate Alias: <strong>wlbox1<\/strong><br \/>\n* Click <em>Save<\/em><\/p>\n<span id=\"_4\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001-233x300.jpg\" alt=\"\" title=\"wls_saml11_tgt_IdA_ap_00001\" width=\"233\" height=\"300\" class=\"aligncenter size-medium wp-image-4683\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001-233x300.jpg 233w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001.jpg 702w\" sizes=\"auto, (max-width: 233px) 100vw, 233px\" \/><\/a><\/h6><\/span>\n<span id=\"Configure_SAML_1.1_Destination_Side_Federation_Services\"><h3>Configure SAML 1.1 Destination Side Federation Services<\/h3><\/span>\n<p>* Go to <em>domain > Environment > Servers > examplesServer > Configuration > Federation Services > SAML 1.1 Destination Site<\/em><br \/>\n* Click <em>Lock &#038; Edit<\/em> and enter:<br \/>\n&#8211; Destination Site Enabled: <strong>true<\/strong><br \/>\n&#8211; Assertion Consumer URIs: <strong>\/samlacs\/acs<\/strong><br \/>\n&#8211; ACS Requires SSL: <strong>true<\/strong><br \/>\n&#8211; SSL Client Identity Alias: <strong>wlbox<\/strong>  #Note: this is the destination machine server key<br \/>\n&#8211; SSL Client Identity Pass Phrase: <strong>secret<\/strong><br \/>\n&#8211; POST Recipient Check Enabled: <strong>true<\/strong><br \/>\n&#8211; POST one Use Check Enabled: <strong>true<\/strong><br \/>\n&#8211; Used Assertion Cache Properties: <strong>APID=ap_00001<\/strong><br \/>\n* Click <em>Save <\/em>and <em>Activate Changes<\/em><\/p>\n<span id=\"_5\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_fed_svc.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_fed_svc-277x300.jpg\" alt=\"\" title=\"wls_saml11_tgt_fed_svc\" width=\"277\" height=\"300\" class=\"aligncenter size-medium wp-image-4684\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_fed_svc-277x300.jpg 277w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_fed_svc.jpg 739w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/><\/a><\/h6><\/span>\n<span id=\"Add_a_New_SAML_Identity_Assertion_Provider\"><h4>Add a New SAML Identity Assertion Provider<\/h4><\/span>\n<p>* Go to <em>domain > Security Realms > saml11realm > Providers > Authentication<\/em><br \/>\n* Click<em> Lock &#038; Edit<\/em><br \/>\n* Click New and enter:<br \/>\n&#8211; Name: <strong>saml11SAMLAuthn<\/strong><br \/>\n&#8211; Type: <em>SAMLAuthenticator<\/em><br \/>\n* Click <em>Save<\/em><br \/>\n* Click the newly created <em>saml11SAMLAuthn <\/em>and go to <em>Configuration > Common<\/em><br \/>\n* Set<br \/>\n&#8211; Control Flag: <em>SUFFICIENT<\/em><br \/>\n* Click <em>Activate Changes<\/em><br \/>\n* <strong>Restart <\/strong>WebLogic<\/p>\n<span id=\"_6\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_virtual_samlAuthn.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_virtual_samlAuthn-300x217.jpg\" alt=\"\" title=\"wls_saml11_tgt_IdA_ap_00001_virtual_samlAuthn\" width=\"300\" height=\"217\" class=\"aligncenter size-medium wp-image-4686\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_virtual_samlAuthn-300x217.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_virtual_samlAuthn.jpg 515w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Enable_Virtual_Users\"><h3>Enable Virtual Users<\/h3><\/span>\n<p>* A virtual user is a user who is authenticated on the SAML Identity Provider and this user is transferred ( with all his attributes and roles )  in a SAML Token to the Service Provider.<br \/>\n* This user does not need to exists on the WebLogic server of the Service Provider.<\/p>\n<span id=\"Enable_Allow_Virtual_Users\"><h4>Enable Allow Virtual Users<\/h4><\/span>\n<p>* Go to <em>domain > Security Realms > saml11realm > Providers > Authentication > saml11SAMLIdA > Management > Asserting Parties > ap_00001<\/em><br \/>\n* Click<em> Lock &#038; Edit<\/em><br \/>\n* Check <em>Allow Virtual Users<\/em><br \/>\n* Click <em>Save<\/em> and <em>Activate Changes<\/em><\/p>\n<span id=\"_7\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_virtual.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_virtual.jpg\" alt=\"\" title=\"wls_saml11_tgt_IdA_ap_00001_virtual\" width=\"131\" height=\"43\" class=\"aligncenter size-full wp-image-4685\" \/><\/a><\/h6><\/span>\n<span id=\"Enable_Group_Attributes\"><h2>Enable Group Attributes<\/h2><\/span>\n<p>* By default, WebLogic SAML1.1 does not include group attributes in the generated SAML token.<br \/>\n* To enable it:<br \/>\n* On source site, go to <em>Home >Summary of Security Realms >saml11realm >Providers >Authentication > saml11CredMapperv2 >Management >rp_00001<\/em><br \/>\n&#8211; Check <em>Include Groups Attribute<\/em> at the bottom of the page<\/p>\n<span id=\"_8\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001_enable_grp.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001_enable_grp.jpg\" alt=\"\" title=\"wls_saml11_src_credMapperv2_rp00001_enable_grp\" width=\"151\" height=\"29\" class=\"aligncenter size-full wp-image-4687\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001_enable_grp.jpg 151w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_src_credMapperv2_rp00001_enable_grp-150x29.jpg 150w\" sizes=\"auto, (max-width: 151px) 100vw, 151px\" \/><\/a><\/h6><\/span>\n<p>* On target site, go to <em>Home >Summary of Security Realms >saml11realm >Providers >saml11SAMLAuthn >Management >ap_00001<\/em><br \/>\n&#8211; Check <em>Process Groups Attribute<\/em> at the bottom of the page<\/p>\n<span id=\"_9\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_process_grp.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/wls_saml11_tgt_IdA_ap_00001_process_grp.jpg\" alt=\"\" title=\"wls_saml11_tgt_IdA_ap_00001_process_grp\" width=\"172\" height=\"37\" class=\"aligncenter size-full wp-image-5118\" \/><\/a><\/h6><\/span>\n<span id=\"Test\"><h2>Test<\/h2><\/span>\n<p>* Download <a href=\"http:\/\/www.oracle.com\/technetwork\/articles\/entarch\/sso-with-saml-134555.zip\">sso-with-saml-134555.zip<\/a>and unzip into a temp directory. You&#8217;ll see <strong>appA.war<\/strong> and <strong>appB.war<\/strong> files.<br \/>\n* Start JDeveloper and create a new application named, e.g. <strong><a href='https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/test.saml11.zip'>test.saml11<\/a><\/strong><br \/>\n* Import both appA and appB into the JDev application.<br \/>\n* Modify URLs containing <em>localhost <\/em>to appropriate host names in following files:<br \/>\n&#8211; <em>appA\/Web Content\/admin\/auth.jsp<\/em><br \/>\n* Deploy appA to wlbox1<br \/>\n* Deploy appB to wlbox<\/p>\n<span id=\"Turn_on_Debugging\"><h3>Turn on Debugging<\/h3><\/span>\n<p>* Go to <em>domain > Environment > Servers > examplesServer > Debug<\/em><br \/>\n* Click <strong>Lock &#038; Edit<\/strong><br \/>\n* Go to and check: <em>weblogic > security > saml<\/em><br \/>\n* Click <strong>Enable <\/strong>and <strong>Activate Changes<\/strong><\/p>\n<span id=\"Test_SSO\"><h3>Test SSO<\/h3><\/span>\n<span id=\"Access_appA_First\"><h4>Access appA First<\/h4><\/span>\n<p>* Go to <a href=\"http:\/\/wlbox1:7001\/appA\/login.jsp\">http:\/\/wlbox1:7001\/appA\/login.jsp<\/a><br \/>\n* Enter<br \/>\n&#8211; Username: ssouser<br \/>\n&#8211; Password: welcome1<br \/>\n* Once logged in, click<strong> Application &#8211; appB on domainB<\/strong> link<\/p>\n<span id=\"_10\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appA_first_page.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appA_first_page.jpg\" alt=\"\" title=\"saml11_sso_appA_first_page\" width=\"553\" height=\"221\" class=\"aligncenter size-full wp-image-4203\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appA_first_page.jpg 553w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appA_first_page-300x119.jpg 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><\/a><\/h6><\/span>\n<p>* appB on destination site is shown<\/p>\n<span id=\"_11\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page.jpg\" alt=\"\" title=\"saml11_sso_appB_services_page\" width=\"514\" height=\"132\" class=\"aligncenter size-full wp-image-4202\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page.jpg 514w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page-300x77.jpg 300w\" sizes=\"auto, (max-width: 514px) 100vw, 514px\" \/><\/a><\/h6><\/span>\n<span id=\"Access_appB_First\"><h4>Access appB First<\/h4><\/span>\n<p>* Go to <a href=\"http:\/\/wlbox:7001\/appB\/admin\/services.jsp\">http:\/\/wlbox:7001\/appB\/admin\/services.jsp<\/a><br \/>\n* Enter username and password when prompted<\/p>\n<span id=\"_12\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_first_login.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_first_login.jpg\" alt=\"\" title=\"saml11_sso_appB_first_login\" width=\"628\" height=\"183\" class=\"aligncenter size-full wp-image-4201\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_first_login.jpg 628w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_first_login-300x87.jpg 300w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/a><\/h6><\/span>\n<p>* appB\/admin\/services.jsp page is shown<\/p>\n<span id=\"_13\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page.jpg\" alt=\"\" title=\"saml11_sso_appB_services_page\" width=\"514\" height=\"132\" class=\"aligncenter size-full wp-image-4202\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page.jpg 514w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2012\/01\/saml11_sso_appB_services_page-300x77.jpg 300w\" sizes=\"auto, (max-width: 514px) 100vw, 514px\" \/><\/a><\/h6><\/span>\n<span id=\"Issues\"><h2>Issues<\/h2><\/span>\n<span id=\"LoginException_while_asserting_identity_returning_SC_FORBIDDEN\"><h3>LoginException while asserting identity, returning SC_FORBIDDEN<\/h3><\/span>\n<p>* Error message:<\/p>\n<pre lang=\"bash\">\r\n####<Jan 24, 2012 11:05:59 PM PST> <Debug> <SecuritySAMLAtn> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <e6ea830ad360905e:-7b11c7e8:13513abed61:-8000-0000000000000026> <1327475159603> <BEA-000000> <SAMLAssertion: Assertion contains NotBefore condition> \r\n####<Jan 24, 2012 11:05:59 PM PST> <Debug> <SecuritySAMLAtn> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <e6ea830ad360905e:-7b11c7e8:13513abed61:-8000-0000000000000026> <1327475159603> <BEA-000000> <SAMLAssertion: Assertion contains NotOnOrAfter condition> \r\n####<Jan 24, 2012 11:05:59 PM PST> <Debug> <SecuritySAMLAtn> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <e6ea830ad360905e:-7b11c7e8:13513abed61:-8000-0000000000000026> <1327475159603> <BEA-000000> <SAMLAssertion: [Security:099031]Assertion is invalid before Tue Jan 24 23:06:04 PST 2012.> \r\n####<Jan 24, 2012 11:05:59 PM PST> <Debug> <SecuritySAMLService> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <e6ea830ad360905e:-7b11c7e8:13513abed61:-8000-0000000000000026> <1327475159603> <BEA-000000> <SAMLDestinationSiteHelper: doLogin: LoginException while asserting identity, returning SC_FORBIDDEN: javax.security.auth.login.LoginException: [Security:090377]Identity Assertion Failed, weblogic.security.spi.IdentityAssertionException: [Security:090377]Identity Assertion Failed, weblogic.security.spi.IdentityAssertionException: [Security:099031]Assertion is invalid before Tue Jan 24 23:06:04 PST 2012.> \r\n####<Jan 24, 2012 11:05:59 PM PST> <Debug> <SecuritySAMLService> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <e6ea830ad360905e:-7b11c7e8:13513abed61:-8000-0000000000000026> <1327475159603> <BEA-000000> <SAMLSingleSignOnService.doACSGet: Login failed, returning> \r\n<\/pre>\n<p>* Cause: there are time differences between source site and destination site<br \/>\n* Fix: Adjust TTL for both credential mapper and relying party, e.g:<br \/>\n&#8211; Assertion Time To Live: 120<br \/>\n&#8211; Assertion Time To Live Offset: -5<\/p>\n<span id=\"Error_4038211Forbidden\"><h3>Error 403&#8211;Forbidden<\/h3><\/span>\n<p>* Error message:<br \/>\n####<May 10, 2012 10:42:58 AM PDT> <Debug> <SecuritySAMLLib> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <024170c1c59452c4:-3e5ca8fa:13737be5a14:-8000-00000000000000ed> <1336671778195> <BEA-000000> <SAMLSignedObject.verify(): validating signature><br \/>\n####<May 10, 2012 10:42:58 AM PDT> <Debug> <SecuritySAMLService> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <024170c1c59452c4:-3e5ca8fa:13737be5a14:-8000-00000000000000ed> <1336671778195> <BEA-000000> <SAMLDestinationSiteHelper: Signature verification failed with exception: org.opensaml.InvalidCryptoException: SAMLSignedObject.verify() failed to validate signature value><br \/>\n####<May 10, 2012 10:42:58 AM PDT> <Debug> <SecuritySAMLService> <wlbox> <examplesServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <024170c1c59452c4:-3e5ca8fa:13737be5a14:-8000-00000000000000ed> <1336671778195> <BEA-000000> <SAMLDestinationSiteHelper: Unable to validate response -- returning SC_FORBIDDEN><br \/>\n* Cause: source site certificate not setup correctly.<br \/>\n* Fix: see <a href=\"#Import_Source_Site_Certificate\">Import Source Site Certificate<\/a>.<br \/>\n&#8211; Check expiration date for the trusted certificates. Re-import if necessary.<\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* <a href=\"http:\/\/docs.oracle.com\/cd\/E12840_01\/wls\/docs103\/secmanage\/saml.html\">Configuring Single Sign-On with Web Browsers and HTTP Clients <\/a><br \/>\n* <a href=\"http:\/\/www.oracle.com\/technetwork\/articles\/entarch\/sso-with-saml-099684.html\">Configuring Single Sign-On using SAML in WebLogic Server 9.2<\/a><br \/>\n* <a href=\"http:\/\/biemond.blogspot.com\/2009\/05\/sso-with-weblogic-103-and-saml.html\">SSO with WebLogic 10.3 and SAML<\/a><br \/>\n* <a href=\"http:\/\/htotapally.blogspot.com\/2010\/08\/single-sign-on-using-weblogic-103-and.html\">http:\/\/htotapally.blogspot.com\/2010\/08\/single-sign-on-using-weblogic-103-and.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>* This is the note I took following the steps to setup SAML1.1 SSO solution as described in the references. * I used two Oracle virtual boxes downloaded from here. * I named one virtual box wlbox1 and function as &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=4179\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[119,104],"tags":[],"class_list":["post-4179","post","type-post","status-publish","format-standard","hentry","category-saml","category-weblogic11g"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-15p","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/4179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4179"}],"version-history":[{"count":50,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/4179\/revisions"}],"predecessor-version":[{"id":5323,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/4179\/revisions\/5323"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}