<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8081952238935480135</id><updated>2026-10-05T23:51:04.241-07:00</updated><category term="Oracle Identity Manager 11 G Installation"/><category term="erminal"/><title type='text'>IDM OIM Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>135</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-1918208210391233031</id><published>2020-09-22T13:15:00.000-07:00</published><updated>2020-09-22T13:15:07.247-07:00</updated><title type='text'>fedora generating /run/initramfs/rdsosreport.txt</title><content type='html'>&lt;div style=&quot;display: none;&quot;&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;My fedora virtual machine not able to boot and showing as a&amp;nbsp; generating /run/initramfs/rdsosreport.txt error and going to emergency mode&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Solution:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;run systemctl and enter&lt;/p&gt;&lt;p&gt;it will show you the error in the screen&amp;nbsp; as:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;failed failed&amp;nbsp;/dev/mapper/fedora-root&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;run fsck /dev/mapper/fedora-root and enter y all the prompts&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It will fix your booting issues.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Type exit and it will boot the system.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Best of luck.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/1918208210391233031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2020/09/fedora-generating-runinitramfsrdsosrepo.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/1918208210391233031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/1918208210391233031'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2020/09/fedora-generating-runinitramfsrdsosrepo.html' title='fedora generating /run/initramfs/rdsosreport.txt'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-7621857593012443209</id><published>2017-01-23T15:50:00.001-08:00</published><updated>2017-01-23T15:50:28.228-08:00</updated><title type='text'>How to Delegate Admin User Privileges OIM 11g R1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
I would like to delegate the user administration privileges &amp;nbsp;various departments. I need to setup the following configuration to delegate the user privileges for various departments. In my example department name is &lt;b&gt;celorg.&lt;/b&gt; They are&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
1. Create the Admin User&lt;/h2&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;It is a two step process:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;1.1 Login to the oim using the admin user &lt;b&gt;xelsysadm &lt;/b&gt;&amp;nbsp;and Admin User Password.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;1.2 Create user id cel_admin and last name is College of Extended Learning, and Password using the create user interface.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
2. Create the Role&lt;/h2&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;It is a three step process to create a role:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;2.1 Login to the oim using the admin user&amp;nbsp;&lt;b&gt;xelsysadm&amp;nbsp;&lt;/b&gt;&amp;nbsp;and Admin User Password.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;2.2 Create role name is cel_admin create role user interface.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;2.3 Assign the role to the user using the role member user interface.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
3. Create the Organization&lt;/h2&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;It is a three step process to create a Organization:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;3.1 Login to the oim using the admin user&amp;nbsp;&lt;b&gt;xelsysadm&amp;nbsp;&lt;/b&gt;&amp;nbsp;and Admin User Password.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;3.2 Create a Organization Name is &lt;b&gt;celorg&lt;/b&gt; and Type is &lt;b&gt;Department &lt;/b&gt;using Create Organization user interface.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;3.3 &amp;nbsp;Click Administrative Roles ==&amp;gt; Assign ==&amp;gt; Select Role (cel_admin) and Assign Check Box and Click Assign button and It will assign the role. &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
4. Create Authorization Policy&lt;/h2&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;4.1 Login to the oim using the admin user&amp;nbsp;&lt;b&gt;xelsysadm&amp;nbsp;&lt;/b&gt;&amp;nbsp;and Admin User Password.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;4.2 Click Authorization Policy and perform the following tasks to create the authorization policy:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4.2.1 Create Authorization Policy&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Policy Name: College Of Extended Learning Admin Policy&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Entity Name: User Management&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Click Next Button&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4.2.2 &amp;nbsp;Select Permissions&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Create User&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Change Password&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Modify User Profile&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Search User&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; View User Details&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Change User Password&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Modify User Status&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Click Next Button&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.3 &amp;nbsp;Select Data Constraint&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Add User Organization celorg&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select Hierarchy Aware Check Box&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Click Next Button&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.4 Select Policy Assignment&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Add User role is cel_admin&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Click Next Button and Finish Button and It will create the authorization policy. &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;h2&gt;
5. Testing&lt;/h2&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Login to the oim using the admin user&amp;nbsp;&lt;b&gt;cel_admin&amp;nbsp;&lt;/b&gt;&amp;nbsp;and Admin User Password.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Create the user using create user Link and Enter Last Name, Select Organization from the&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Lookup celorg, User Id , User Type is Temp and Password. Click Save Button and It will&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Create the user in celorg organization department.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/7621857593012443209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2017/01/how-to-delegate-admin-user-privileges.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/7621857593012443209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/7621857593012443209'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2017/01/how-to-delegate-admin-user-privileges.html' title='How to Delegate Admin User Privileges OIM 11g R1'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-4149266498801052918</id><published>2016-11-17T16:49:00.000-08:00</published><updated>2016-11-17T16:49:57.371-08:00</updated><title type='text'>&quot;{&quot;error&quot;:&quot;invalid_grant&quot;,&quot;error_description&quot;:&quot;Please check the &#39;exp&#39; claim.&quot;}&quot;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
I am getting the following error while sending the JWT Token request to https://api.box.com/oauth2/token&lt;br /&gt;
&lt;br /&gt;
Error:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&quot;{&quot;error&quot;:&quot;invalid_grant&quot;,&quot;error_description&quot;:&quot;Please check the &#39;exp&#39; claim.&quot;}&quot;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
long DEVIDE=1000L;&lt;br /&gt;
long currentTime=System.currentTimeMillis();&lt;br /&gt;
long seconds=(currentTime/DEVIDE);&lt;br /&gt;
seconds=seconds+60L;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Map&amp;lt;String, Object&amp;gt; claims= new HashMap&amp;lt;String,Object&amp;gt;();&lt;br /&gt;
claims.put(&quot;iss&quot;, CLIENT_ID);&lt;br /&gt;
claims.put(&quot;sub&quot;, SUBJECT_ID);&lt;br /&gt;
claims.put(&quot;box_sub_type&quot;, &quot;user&quot;);&lt;br /&gt;
claims.put(&quot;aud&quot;, &quot;https://api.box.com/oauth2/token&quot;);&lt;br /&gt;
claims.put(&quot;jti&quot;, UUID.randomUUID());&lt;br /&gt;
long currentTime=System.currentTimeMillis();&lt;br /&gt;
long seconds=(currentTime/DEVIDE);&lt;br /&gt;
seconds=seconds+60l;&lt;br /&gt;
&lt;b&gt;claims.put(&quot;exp&quot;,seconds);&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After modifying the code issue will be resolved.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/4149266498801052918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2016/11/errorinvalidgranterrordescriptionplease.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4149266498801052918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4149266498801052918'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2016/11/errorinvalidgranterrordescriptionplease.html' title='&quot;{&quot;error&quot;:&quot;invalid_grant&quot;,&quot;error_description&quot;:&quot;Please check the &#39;exp&#39; claim.&quot;}&quot;'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-7182769168429710627</id><published>2016-09-14T13:15:00.002-07:00</published><updated>2016-09-14T13:15:36.514-07:00</updated><title type='text'>Sending Tomcat Logs to Syslog Servers in Redhat 7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I want to send the tomcat logs to syslogs servers in redhat 7 as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Configuring the tomcat.conf file&lt;/h3&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;I want to send the tomcat catalina.log to syslog server using the &lt;b&gt;local1&lt;/b&gt; facility. Go to the /etc/rsyslog.d/ and create a file called tomcat.conf and add the following content to the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;# File 1&lt;br /&gt;
input(type=&quot;imfile&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; File=&quot;/var/log/tomcat/catalina.log&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Tag=&quot;catalina&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; StateFile=&quot;/var/spool/catalina&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Severity=&quot;info&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Facility=&quot;local1&quot;)&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
local1.* &amp;nbsp;@&lt;b&gt;&amp;lt;syslogServer&amp;gt;&lt;/b&gt;:514&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Replace syslogServer with your actual syslog name or ip address server.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the above configuration&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;File &lt;/b&gt;is the tomcat log file absolue path. In my case tomcat log file path is /var/log/tomcat/catalina.log.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Tag&lt;/b&gt; is the identification for the tomcat log file into the syslog server. In my case catalina is the tag to filter the content from the syslog server.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;type&lt;/b&gt; is the module is being used to parse the log files. This module needs to be configured in the /etc/rsyslog.conf file. Please look &lt;b&gt;section 2.2 &lt;/b&gt;for configuration.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;StateFile&lt;/b&gt; is the tomcat log file parse status.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Severity&lt;/b&gt; is the logging severity into the syslog server&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Faciltiy&lt;/b&gt; is the logging under facilitiy. In my case facility is local1 and this faility is being used to&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
filter the log file content and send to the different location.&amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Configuring the rsyslog.conf&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; 2.1 Load the imfile module&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;The imfile module is required to parse the catalina.log file &amp;nbsp;and send to the syslog server.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Edit the rsyslog.conf file and add the following content under MODULE section.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;module(load=&quot;imfile&quot; PollingInterval=&quot;10&quot;)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; 2.2 Configure the messages&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; This confuguration is required for not logging the calatling.log messages into the /var/log/messages.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; Edit the /etc/rsyslog.conf file and append the local1.none content before /var/log/messages.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; *.info;mail.none;authpriv.none;cron.none;&lt;b&gt;local1.none&lt;/b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/var/log/messages&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;2.3 Restart the rsyslog daemon.&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;systemctl restart rsyslog&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/7182769168429710627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2016/09/sending-tomcat-logs-to-syslog-servers.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/7182769168429710627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/7182769168429710627'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2016/09/sending-tomcat-logs-to-syslog-servers.html' title='Sending Tomcat Logs to Syslog Servers in Redhat 7'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-4462183714564710635</id><published>2016-01-29T14:04:00.002-08:00</published><updated>2016-01-29T14:04:49.259-08:00</updated><title type='text'>Enabling Windows Authentication WCF Web Service in IIS </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
I want to enable the windows authentication for my existing WCF web service as follows:&lt;br /&gt;
&lt;br /&gt;
Pre-Requisite:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;The WCF Service application already deployed in the IIS.&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Wcf Service Application&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;1.1 web.config&amp;nbsp;&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; The following changes needs to be done to enable the windows authentication for wcf service &amp;nbsp; application:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Configure&amp;nbsp;&lt;b&gt;Basic Http Binding:&lt;/b&gt;&amp;nbsp;&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Go to the web.config file under &amp;lt;configuration&amp;gt;&amp;lt;system.serviceModel&amp;gt; section add your basic http binding. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;lt;bindings&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;basicHttpBinding&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;binding name=&quot;&lt;span style=&quot;color: red;&quot;&gt;BasicHttpEndpointBinding&lt;/span&gt;&quot;&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;security mode=&quot;TransportCredentialOnly&quot;&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;transport clientCredentialType=&quot;Windows&quot; /&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/security&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/binding&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/basicHttpBinding&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/bindings&amp;gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; This binding name &amp;nbsp;needs to be included in the Service Endpoint binding configuration.&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; Configure Service Endpoint&amp;nbsp;&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Go to the web.config file under &amp;lt;configuration&amp;gt;&amp;lt;system.serviceModel&amp;gt;&amp;lt;service&amp;gt; &amp;nbsp;section add your endpoint configuration.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&amp;lt;endpoint address=&quot;&quot; binding=&quot;basicHttpBinding&quot; contract=&quot;Service.AppService&quot; bindingNamespace=&quot;http://example.edu/Service/&quot; &lt;span style=&quot;color: red;&quot;&gt;bindingConfiguration=&quot;BasicHttpEndpointBinding&quot; &lt;/span&gt;&amp;nbsp;&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I have highlighted the font in red color to modify the binding configuration.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. &amp;nbsp;IIS Configuration&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 2.1 Application Pool&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; This configuration is required because to delegate the &amp;nbsp;authenticated kerberos &amp;nbsp;token to target application:&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;Open the IIS Manager Console --&amp;gt; Host Name --&amp;gt; Application Pools --&amp;gt; Select WCF Deployed Application Pool --&amp;gt; &amp;nbsp;Right Click --&amp;gt; Advanced Settings --&amp;gt; &amp;nbsp;Process Model --&amp;gt; Identity --&amp;gt; Select Custom Account --&amp;gt; Click Set Button.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Enter Your Service Account User Name, Password, and Confirm Password.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; After Configuring the Application Pool Identity, you should restart the Application Pool&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 2.2 WCF Service Application&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;This configuration is required because to enable the windows authentication for wcf service application.&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Configuring the Windows Authentication:&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Open the IIS Manager Console --&amp;gt; Host Name --&amp;gt; &amp;nbsp;Web Site --&amp;gt; WCF Service Application --&amp;gt; Click Authentication --&amp;gt; Right Click Windows Authentication --&amp;gt; Select Enable&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; It will enable the windows authentication.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;Configure the Use Pool Identity&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Open the IIS Manager Console --&amp;gt; Host Name --&amp;gt; &amp;nbsp;Web Site --&amp;gt; WCF Service Application --&amp;gt; Click Configuration Editor --&amp;gt;&amp;nbsp;system.webServer/security/authentication/windowsAuthentication &amp;gt; UseAppPoolCredential value false to true.&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 2.3 Configuring the SPN&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Open the command prompt as a windows administrator and configure the spn for host name as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
setspn -S &quot;HTTP/Hostname&quot; &amp;nbsp;&amp;lt;Application Pool Identity&amp;gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
setspn -S &quot;HTTP/host fqdn&quot; &amp;nbsp;&amp;lt;Application Pool Identity&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The &lt;b&gt;&amp;lt;Application Pool Identity&amp;gt; &lt;/b&gt;configured at the step 2.1&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3. Restart IIS&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Open the IIS Manager Console --&amp;gt; Host Name --&amp;gt; Right Click --&amp;gt; Stop&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; It will stop the IIS server&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Open the IIS Manager Console --&amp;gt; Host Name --&amp;gt; Right Click --&amp;gt; Start&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;It will start the IIS server&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Active Directory Configuration&lt;/h3&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;This configuration is required to delegate the kerberos token to the application.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Open the Active Directory Users and Computer --&amp;gt; Search the Application Pool Identity (2.1 Configured Application Pool Identity or IIS Service Account) and Click Delegation --&amp;gt; Select &quot;Trust this user for delegation to Any Service Kerberos Only.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Test the application&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 5.1 Create the krb.conf file&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Create the krb.conf file and add the following content inside the file.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; [libdefaults]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; default_realm = EXAMPLE.EDU&lt;/div&gt;
&lt;div&gt;
[realms]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; EXAMPLE.EDU = {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kdc = dcs01example.edu&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Replace default_realm and kdc values with your ad domain realm and ad kdc.&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 5.2 Create the JAAS login.conf file&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Create the login.conf file and add the following content inside the file.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
com.sun.security.jgss.krb5.initiate {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; com.sun.security.auth.module.Krb5LoginModule required&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;doNotPrompt=false useTicketCache=true;&lt;/div&gt;
&lt;div&gt;
};&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 5.3 Execute the Java Code&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Execute the following code to test the Windows Authentication.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
import java.net.Authenticator;&lt;/div&gt;
&lt;div&gt;
import java.net.PasswordAuthentication;&lt;/div&gt;
&lt;div&gt;
import java.net.URL;&lt;/div&gt;
&lt;div&gt;
import edu.example.Service;&lt;/div&gt;
&lt;div&gt;
import edu.example.Service_Service;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
public class ClientService {&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; private static String USER_NAME=&quot;&amp;lt;Replace Your User Name&amp;gt;&quot;;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;private static String USER_PWD=&quot;&amp;lt;Replace Your User Password&amp;gt;&quot;;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public ClientService() throws Exception {&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public static void main(String args[]) throws Exception&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.setProperty(&quot;java.security.krb5.conf&quot;,&quot;c:/ClientService/src/krb.conf&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.setProperty(&quot;java.security.auth.login.config&quot;,&quot;C:/ClientService/src/login.conf&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.setProperty(&quot;javax.security.auth.useSubjectCredsOnly&quot;,&quot;false&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.setProperty(&quot;com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump&quot;, &quot;true&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.setProperty(&quot;com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump&quot;, &quot;true&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;System.setProperty(&quot;com.sun.xml.ws.transport.http.HttpAdapter.dump&quot;, &quot;true&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Authenticator myAuth = new Authenticator()&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;@Override&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;protected PasswordAuthentication getPasswordAuthentication()&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;System.err.println(&quot;Feeding username and password for &quot;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ getRequestingScheme());&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new PasswordAuthentication(USER_NAME, USER_PWD.toCharArray());&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;};&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Authenticator.setDefault(myAuth);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Service_Service service= new Service_Service();&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Service binding=service.getBasicHttpBindingService();&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;String result= binding.verify(&quot;&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; System.out.println(result);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/4462183714564710635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2016/01/enabling-windows-authentication-wcf-web.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4462183714564710635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4462183714564710635'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2016/01/enabling-windows-authentication-wcf-web.html' title='Enabling Windows Authentication WCF Web Service in IIS '/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-4003374301010332860</id><published>2015-10-22T10:06:00.000-07:00</published><updated>2015-11-16T10:58:46.941-08:00</updated><title type='text'>WARNING: The access control entry defines the ObjectType &#39;GUID&#39; that can&#39;t be resolved.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I am getting the warning message after upgrading the exchange 2010 to exchange 2013 as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;WARNING: The access control entry defines the ObjectType &#39;GUID&#39; that can&#39;t be resolved.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;1. Finding the Corrupted ObjectType in the Exchange 2013.&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;Get-AdPermission &quot;dc=example,dc=edu&quot;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;After executing the Above command it will display the ACL entries for that object and also it will display the corrupted objectType. The sample output is given below:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; Everyone &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; True &amp;nbsp;False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; Everyone &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; False False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; NT AUTHORITY\ENTE... False False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; NT AUTHORITY\Auth... False False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; NT AUTHORITY\SYSTEM &amp;nbsp;False False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; BUILTIN\Administr... False False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; S-1-5-32-554 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; False False&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; S-1-5-32-554 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; False False&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;WARNING: The object example.edu has been corrupted, and it&#39;s in an inconsistent state. The following validation happened:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;WARNING: The access control entry defines the ObjectType &#39;acd46e6d7-8d45-4516-a4b3-61c0e509b5be&#39; that can&#39;t be resolved..&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;2. Finding the Corrupted ACL Entry&lt;/b&gt;&lt;/h3&gt;
Get-ACl &quot;AD:\Dc=example,dc=edu&quot; | Select Access -ExpandProperty Access | Where-Object {$_.ObjectType -eq &quot;&lt;span style=&quot;color: red;&quot;&gt;&#39;acd46e6d7-8d45-4516-a4b3-61c0e509b5be&lt;/span&gt;&quot;} | Export-csv &quot;acl.csv&quot;&lt;br /&gt;
&lt;br /&gt;
&quot;ActiveDirectoryRights&quot;,&quot;InheritanceType&quot;,&quot;ObjectType&quot;,&quot;InheritedObjectType&quot;,&quot;ObjectFlags&quot;,&quot;AccessControlType&quot;,&quot;IdentityReference&quot;,&quot;IsInherited&quot;,&quot;InheritanceFlags&quot;,&quot;PropagationFlags&quot;&lt;br /&gt;
&lt;br /&gt;
&quot;ExtendedRight&quot;,&quot;All&quot;,&quot;&lt;span style=&quot;color: red;&quot;&gt;acd46e6d7-8d45-4516-a4b3-61c0e509b5be&lt;/span&gt;&quot;,&quot;00000000-0000-0000-0000-000000000000&quot;,&quot;ObjectAceTypePresent&quot;,&quot;Allow&quot;,&quot;example\testGroup&quot;,&quot;False&quot;,&quot;ContainerInherit&quot;,&quot;None&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Finding the Corresponding Corrupted Permissions&lt;/h3&gt;
Get-ADPermission &quot;dc=example,dc=edu&quot; | Where-Object {$_.User -like &quot;*testGroup&quot;} ft identity,user,extendedrights,accessrights&lt;br /&gt;
&lt;br /&gt;
Identity &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;User &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExtendedRights &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AccessRights&lt;br /&gt;
-------- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;---- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-------------- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;------------&lt;br /&gt;
example.edu &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;example\testGroup&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{Change Password} &amp;nbsp;{ExtendedRight}&lt;br /&gt;
&lt;b&gt;example.edu &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;example\testGroup&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ExtendedRight}&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I have highlighted the corrupted ACL entry in the example.edu container.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Removing the Corrupted ACL entry in ADUC User Interface.&lt;/h3&gt;
Login as as a domain admin and remove the acl entry as follows:&lt;br /&gt;
&lt;br /&gt;
Right Click on example.ed domain --&amp;gt; Properties --&amp;gt; Security --&amp;gt; &amp;nbsp;Advanced --&amp;gt; Select the Corrupted ACL Entry --&amp;gt; Remove&lt;br /&gt;
&lt;br /&gt;
The issue will be resolved after removing the corrupted acl entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/4003374301010332860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/10/warning-access-control-entry-defines.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4003374301010332860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4003374301010332860'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/10/warning-access-control-entry-defines.html' title='WARNING: The access control entry defines the ObjectType &#39;GUID&#39; that can&#39;t be resolved.'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-8490816281146319257</id><published>2015-08-19T13:57:00.000-07:00</published><updated>2015-08-19T13:57:42.862-07:00</updated><title type='text'> BDB1538 Program version 5.3 doesn&#39;t match environment version 4.7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
I am getting the following exception in open ldap after upgrading the red hat 6 to 7:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;BDB1538 Program version 5.3 doesn&#39;t match environment version 4.7&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Cause:&amp;nbsp;&lt;/h3&gt;
&lt;br /&gt;
Berkeley Data Base&amp;nbsp; upgraded from 4.7 to 5.3 while upgrading the redhat 6 to 7.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Solution:&lt;/h3&gt;
&lt;br /&gt;
Go to the /var/lib/ldap directory and upgrade the database file version from 4.7 to 5.3 as follows:&lt;br /&gt;
&lt;br /&gt;
Currently I have the following files in the /var/lib/ldap directory&lt;br /&gt;
&lt;br /&gt;
cn.bdb&lt;br /&gt;
dn2id.bdb&lt;br /&gt;
id2entry.bdb&lt;br /&gt;
objectClass.bdb&lt;br /&gt;
ou.bdb &lt;br /&gt;
&lt;br /&gt;
Execute the following command to upgrade the database files as follows:&lt;br /&gt;
&lt;br /&gt;
db_upgrade&amp;nbsp; cn.bdb&lt;br /&gt;
db_upgrade dn2id.bdbdb_upgrade id2entry.bdb&lt;br /&gt;
db_upgrade objectClass.bdb&lt;br /&gt;
db_upgrade ou.bdb &lt;br /&gt;
&lt;br /&gt;
After execute the above commands, you need to change the ownership for the files as foolows:&lt;br /&gt;
&lt;br /&gt;
chown ldap:ldap * -R&lt;br /&gt;
&lt;br /&gt;
After executing the above command, it will change the ownership of the files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the service systemctl restart slapd. The ldap service restart successfully and the issue will be resolved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/8490816281146319257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/08/bdb1538-program-version-53-doesnt-match.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/8490816281146319257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/8490816281146319257'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/08/bdb1538-program-version-53-doesnt-match.html' title=' BDB1538 Program version 5.3 doesn&#39;t match environment version 4.7'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-6767565730126849815</id><published>2015-07-14T15:00:00.002-07:00</published><updated>2015-07-14T15:00:30.058-07:00</updated><title type='text'>Segmentation fault error 4 in liblftp-network.so</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
I am getting the following errors in message log while mirroring the red-hat 7 latest packages using the mrepo and lftp 4.0.9. They are&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Error:&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;lftp[26710]: segfault at 0 ip (null) sp 00007fffcd10e5e8 error 14 in lftp[400000+b000]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;lftp[26769]: segfault at 18 ip 00007fdb03ff4808 sp 00007fff2270cda0 error 4 in liblftp-network.so[7fdb03fe2000+20000]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Cause:&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
Bug in lftp 4.0.9 package.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
To resolve the segmentation fault error, you need to install the latest lftp packages from the yum repo or download the source code to build and install lftp in the local system as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Updating the lftp from repo&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;yum update lftp&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Download the lftp&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Download the lftp source code following url:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
http://lftp.yar.ru/ftp/lftp-4.6.3a.tar.gz&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Build the lftp:&lt;/h3&gt;
&lt;div&gt;
Install the lftp from the source code as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
1. Pre-Requisite&lt;/h3&gt;
&lt;div&gt;
Install the following packages to &amp;nbsp;install the lftp package:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;yum install readline-devel gnutils-devel&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Build Source Code&lt;/h3&gt;
&lt;div&gt;
After installing the pre-requisite packages, please follow the procedure to build the lftp packages from the source code as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;./configure --prefix=/apps/lftp/ --with-gnutls=yes --with-openssl=yes&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;make&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;make install&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It will install the lftp package in /apps/lftp directory.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Configuring lftp command&lt;/h3&gt;
&lt;div&gt;
1. Edit the /etc/mrepo.conf and add replace the lftpcmd value with /apps/lftp/bin/lftp&lt;/div&gt;
&lt;div&gt;
2. Edit the /apps/lftp/etc/lftp.conf and add the following lines to download the redhat 7 packages from the cdn.redhat.com&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
set ssl:ca-file &quot;/root/certs/redhat-uep.pem&quot;&lt;/div&gt;
&lt;div&gt;
set ssl:key-file &quot;/root/certs/cert-key.pem&quot;&lt;/div&gt;
&lt;div&gt;
set ssl:cert-file &quot;/root/certs/cert.pem&quot;&lt;/div&gt;
&lt;div&gt;
set net:timeout 86400&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
3. Execute the following command to mirroring the redhat 7 packages:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; mrepo -guvvv redhat-7Server&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; It will mirror the red-hat packages from the cdn.redhat.com&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Please refer my existing blog &lt;a href=&quot;http://idmoim.blogspot.com/2015/07/how-to-setup-mrepo-redhat-7.html&quot;&gt;how to setup mrepo redhat 7&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
After installing the lftp latest 4.6.3a version, the segmentation issues are resolved.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/6767565730126849815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/07/segmentation-fault-error-4-in-liblftp.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6767565730126849815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6767565730126849815'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/07/segmentation-fault-error-4-in-liblftp.html' title='Segmentation fault error 4 in liblftp-network.so'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-6443885755541604410</id><published>2015-07-11T21:38:00.000-07:00</published><updated>2015-07-11T21:38:34.238-07:00</updated><title type='text'>How to setup mrepo Redhat 7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
The mrepo is a repository building tool for the synchronizing the remote repository to local yum or apt repositories. &amp;nbsp;The following configuration needs to be performed to configure mrepo local repositories in the redhat linux 7. They&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
1. Pre-requisite&lt;/h2&gt;
Install the Red hat 7 Enterprise Edition.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
2. Registering the System&lt;/h2&gt;
Run the following command to register the system in red hat network.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;subscription-manager register --username &amp;lt;Red Hat User Name&amp;gt; --password &amp;lt;Red Hat User Password&amp;gt; --auto-attach&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After executing the above command, it will generate the client-key, client-cert and redhat-ca cert as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Client Key :&amp;nbsp;/etc/pki/entitlement/&amp;lt;Numeric Number&amp;gt;-key.pem&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Client Cert:/etc/pki/entitlement/&amp;lt;Numberic Number&amp;gt;.pem&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Redhat CA Cert: /etc/rhsm/ca/redhat-uep.pem&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It will also generate the &lt;b&gt;/etc/yum.repos.d/redhat.repo&lt;/b&gt; file.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
3. Installing the Packages&lt;/h2&gt;
&amp;nbsp;Run the &lt;b&gt;yum update&lt;/b&gt;&amp;nbsp;command to update the latest packages from the redhat network.&lt;br /&gt;
&lt;br /&gt;
The following packages are required to configure the mrepo. They are&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;3.1 lftp&lt;/h3&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lftp is a ftp tool to get the repositories from the remote system. It supports ftp, sftp, http, and https protocols.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;3.2 httpd&lt;/h3&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;The httpd is a apache web server and it is being used to update the red hat systems in your network using yum repo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;3.3 mrepo&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; The mrepo is repository building tool and it being used to synchronize the remote system to local system repository using various protocols such as ftp,sftp, reposync, reposyncs, http and https.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;3.4 Installing lftp and httpd&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; Run the&amp;nbsp;&lt;b&gt;&amp;nbsp;yum install lftp httpd &lt;/b&gt;command and it will install the lftp and httpd component in the linx system.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;3.5 Installing the mrepo&lt;/h3&gt;
&amp;nbsp;By default mrepo package is not available in the redhat network and it is available in the repofroge repository.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Execute the following command download the mrepo:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;wget http://pkgs.repoforge.org/mrepo/mrepo-0.8.8-0.pre1.el6.rft.noarch.rpm&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After Downloading the mrepo rpm and execute the following command to install the mrepo.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;yum install mrepo-0.8.8-0.pre1.el6.rft.noarch.rpm&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
4. Creating the Red Hat mrepo conf&lt;/h2&gt;
&lt;br /&gt;
Red Hat repository file needs to be created in the /etc/mrepo.conf.d/ directory and file name is redhat-7-x86_64.conf. This configuration is required because it will synchronize the remote repository to your local repository. Add the following content to the redhat-7-x86_64.conf file.&lt;br /&gt;
&lt;br /&gt;
[redhat-7]&lt;br /&gt;
name = Red Hat Enterprise Linux Server $release ($arch)&lt;br /&gt;
release = 7&lt;br /&gt;
arch = x86_64&lt;br /&gt;
metadata = yum repomd&lt;br /&gt;
&lt;br /&gt;
fastrack = https://cdn.redhat.com/rhel-x86_64-server-fastrack-7&lt;br /&gt;
os = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/os/Packages&lt;br /&gt;
extras = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/extras/os/Packages&lt;br /&gt;
rhn-tools = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/rhn-tools/os/Packages&lt;br /&gt;
oracle-java = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/oracle-java/os/Packages&lt;br /&gt;
rh-common = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/rh-common/os/Packages&lt;br /&gt;
supplementary = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/supplementary/os/Packages&lt;br /&gt;
optional = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/optional/os/Packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
5. Configuring the lftp.conf&lt;/h2&gt;
The lftp.conf file needs to be configured because to store the lftp ssl parameter permanently in the global config. This configuration is required for to establish the connectivity from your local repository to remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;5.1 SSL Configuration&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
set ssl:ca-file &quot;/etc/rhsm/ca/redhat-uep.pem&quot;&lt;br /&gt;
set ssl:key-file &quot;/etc/pki/entitlement/&amp;lt;Numeric Number&amp;gt;-key.pem&quot;&lt;br /&gt;
set ssl:cert-file &quot;/etc/pki/entitlement/&amp;lt;Numeric Number&amp;gt;.pem&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;5.2 Network Time Out&lt;/b&gt;&lt;/h2&gt;
&lt;br /&gt;
set net:timeout 86400&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;5.3 Testing the LFTP Connectivity&lt;/b&gt;&lt;/h3&gt;
After configuring the step 5.1 and 5.2, you can verify the connectivity from local repository to remote repository as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;lftp &amp;nbsp;https://cdn.redhat.com/rhel-x86_64-server-fastrack-7&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The above command will open the remote connectivity and you can navigate the files using lftp commands. For example, I want to list the data from the remote repository using ls command as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ls -ltr&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The above command will retrieve the data from the cdn.redhat.com network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
6. Configuring the Apache httpd conf&lt;/h2&gt;
The mrepo.conf file needs to be modified in /etc/httpd/conf.d to display the repository info into the local repository web site. Edit the mrepo.conf file and search the &lt;b&gt;Red Hat Enterprise Server5 &lt;/b&gt;string into the file and add next line to the &lt;b&gt;Red Hat Enterprise Server 5.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AddDecription &quot;Red Hat Enterprise Server 7 for x86_64&quot; redhat-7-x86_64&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;The &lt;b&gt;redhat-7-x86_64&lt;/b&gt;&amp;nbsp;content is configured in the mrepo config file. &amp;nbsp;The redhat-7 is the section name and x86_64 is architecture. Both will be appended and created as directory /var/mrepo/redhat-7-x86_64 after synchronizing the repo using the mrepo command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
7. Synchronizing the Repository&lt;/h2&gt;
Execute the following command to synchronize the red hat 7 repository to your local repository:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;mrepo -guvv &amp;nbsp;&amp;lt;Repo Name&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
For example my repo section name is redhat-7. The command look like this.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;mrepo -guvv&amp;nbsp;redhat-7&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The above command will synchronize the remote repository to local repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
8. Scheduling the Cron Job for Mrepo&lt;/h2&gt;
&lt;br /&gt;
After synchronizing the remote repository to local repository, &amp;nbsp;we need to synchronize the latest updates from remote repository to local repository using the Linux Daily Cron Job. For example my cron job will run every day at 2.30 AM and pull the changes from the redhat network.&lt;br /&gt;
&lt;br /&gt;
We need to create &amp;nbsp;mrepo file in /etc/cron.d/ and add the following content to configure the cron job.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;30 2 *
* * root /usr/bin/mrepo -q –ug&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 56.25pt; mso-add-space: auto;&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
9. Enabling the Http Service&lt;/h2&gt;
We need to enable the httpd service to restart automatically after rebooting the server. Execute the following command to enable the httpd service:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;systemctl enable httpd&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It will enable the service and also it create the symlinks for the httpd service as follows:&lt;br /&gt;
&lt;br /&gt;
ln -s &#39;/usr/lib/systemd/system/httpd.service&#39; &#39;/etc/systemd/system/multi-user.target.wants/httpd.service&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
10. Configuring the Se-Linux Context&lt;/h2&gt;
This step is mandatory only if your enable the se-linux. Configuring the selinux context for httpd &amp;nbsp;mrepo as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;&lt;b&gt;semanage fcontext -a -t httpd_sys_content_t &quot;/var/mrepo(/.*)?&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
After executing the above command and it will configure the selinux context for mrepo and also it will persist the configuration details into the &lt;b&gt;/etc/selinux/targeted/contexts/files/file_contexts.local&lt;/b&gt; file.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;&lt;b&gt;restorecon -R /var/mrepo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;After executing the above command and it will read the configuration from the&amp;nbsp;&lt;/span&gt;&lt;b&gt;/etc/selinux/targeted/contexts/files/file_contexts.local &lt;/b&gt;file and&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;enable the selinux context for the directory /var/mrepo&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 12.8000001907349px; line-height: 21.1200008392334px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/6443885755541604410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/07/how-to-setup-mrepo-redhat-7.html#comment-form' title='47 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6443885755541604410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6443885755541604410'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/07/how-to-setup-mrepo-redhat-7.html' title='How to setup mrepo Redhat 7'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-4082526304724083249</id><published>2015-06-29T10:44:00.000-07:00</published><updated>2015-06-29T10:44:50.767-07:00</updated><title type='text'>Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
I am getting the following error after updating the Linux System using &lt;b&gt;yum update&lt;/b&gt; and rebooting the Linux Kernel Cent OS 7.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Reboot the Linux Cent OS Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
2. Select the Existing Kernel from the Down Arrow.&lt;br /&gt;
&lt;br /&gt;
3. Open the Terminal Window and Login as a root.&lt;br /&gt;
&lt;br /&gt;
4. Remove the current kernel because the kernel got corrupted and execute the following command to remove the current kernel:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;b&gt;yum remove kernel&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
5. Remove the yum cache because it will refer the older repositories from the cache. Execute the following command to clear the yum cache from the system:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;b&gt;yum clean all&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
7. Update the Linux System because it will get the latest kernel from the yum repository. Execute the following command and it will update the kernel:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;b&gt;&amp;nbsp;yum update&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
8. Reboot the Virtual Machine and issue will be resolved.&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/4082526304724083249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/06/kernal-panic-not-syncing-vfs-unable-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4082526304724083249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4082526304724083249'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/06/kernal-panic-not-syncing-vfs-unable-to.html' title='Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0)'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-8575949436701020542</id><published>2015-06-18T11:22:00.000-07:00</published><updated>2015-06-18T11:22:31.056-07:00</updated><title type='text'>How to setup a Cron Schedule  job in Linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I would like to setup Cron Schedule job to execute every minute in Red hat Linux. The following tasks needs to be performed to setup the Cron Schedule Job.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Create or Edit the Cron Tab File&lt;/h3&gt;
&lt;br /&gt;
Execute the following command to edit the cron tab file..&lt;br /&gt;
&lt;br /&gt;
crontab -e&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After executing the above command it will edit crontab file.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Schedule the Cron Job.&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;2.1 Cron Tab Format&lt;/h4&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; The following format is being used to setup the cron job in Linux.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.1 Minute (0-59)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.2 Hour (0-23)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.3 Day Of Month (1-31)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.4 Month (1-12)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.5 Day of Week (0-6)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.6 Command&lt;br /&gt;
&lt;br /&gt;
In my example I am going to setup the cron schedule job to run every minute and append the display output to a file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; * * * * * /home/testuser/display.sh &amp;gt;&amp;gt;display.out&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;in the above example, I have used * * * * * because My Job needs to be run every minute.&lt;br /&gt;
&lt;br /&gt;
The display.sh content is given below:&lt;br /&gt;
&lt;br /&gt;
echo &quot;Diaplying Message&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Listing the Cron Tab&lt;/h3&gt;
&lt;br /&gt;
After setting the cron job, you can list the all available jobs in your user space as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;crontab -l&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; After executing the above command it will display the following output:&lt;br /&gt;
&lt;br /&gt;
* * * * * /home/testuser/display.sh &amp;gt;&amp;gt;display.out&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Cron Job Store Location&lt;/h3&gt;
After creating the Cron Schedule Job, Job details are stored in the following location with username as a file and this file owned by root:root.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;/var/spool/cron/testuser&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Login as a root and edit the&lt;b&gt;&amp;nbsp;&lt;/b&gt;/var/spool/cron/testuser file and verify the cron job content. In my example step 2 content and step 4 content are identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Logging&lt;/h3&gt;
&lt;div&gt;
The cron schedule job running info will be displayed in the following log file:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
/var/log/cron&amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Error Messages&lt;/h3&gt;
If your cron job throwing any error or cron job is not running due to fatal errors or command not found. The error messages are displayed in the following location.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;/var/spool/mail/testuser&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The sample error message is given below:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;From root@test.ad.example.edu &amp;nbsp;Thu Jun 18 09:01:02 2015&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Return-Path: &amp;lt;root@test.ad.example.edu&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Original-To: testuser&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Delivered-To: testuser@test.ad.example.edu&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Received: by test.ad.example.edu (Postfix, from userid 501)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;id 385CE20357; Thu, 18 Jun 2015 09:01:02 -0700 (PDT)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;From: root@test.ad.example.edu (Cron Daemon)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;To: testuser@test.ad.example.edu&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Subject: Cron &amp;lt;testuser@sssdlab-test&amp;gt; testuser /home/testuser/display.sh &amp;gt;&amp;gt;display.out&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Content-Type: text/plain; charset=UTF-8&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Auto-Submitted: auto-generated&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Cron-Env: &amp;lt;LANG=en_US.UTF-8&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Cron-Env: &amp;lt;SHELL=/bin/sh&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Cron-Env: &amp;lt;HOME=/home/testuser&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Cron-Env: &amp;lt;PATH=/usr/bin:/bin&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Cron-Env: &amp;lt;LOGNAME=testuser&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;X-Cron-Env: &amp;lt;USER=testuser&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Message-Id: &amp;lt;20150618160102.385CE20357@test.ad.example.edu&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Date: Thu, 18 Jun 2015 09:01:02 -0700 (PDT)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;/bin/sh: testuser: command not found&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I have setup the cron job to throw the error in the following format:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
* * * * * testuser /home/testuser/display.sh &amp;gt;&amp;gt;display.out&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the above format command is testuser, for that reason, cron job throwing error message is &quot;/bin/sh: testuser: command not found&quot;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The expected result is it will create a display.out file and the content is not appended to a file.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/8575949436701020542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/06/how-to-setup-cron-schedule-job-in-linux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/8575949436701020542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/8575949436701020542'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/06/how-to-setup-cron-schedule-job-in-linux.html' title='How to setup a Cron Schedule  job in Linux'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-2271577743406453367</id><published>2015-06-04T16:59:00.001-07:00</published><updated>2015-06-12T10:58:05.725-07:00</updated><title type='text'>SSSD Linux System Integrate With Active Directory</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
I would like to integrate Linux System Authentication against the centralized Active Directory using System Security Service Daemon (SSSD). SSSD supports two kinds mechanisms to integrate Linux System Authentication against AD for authentication. They are:&lt;br /&gt;
&lt;br /&gt;
1. ID Mapping using ObjectSID in AD&lt;br /&gt;
2.&amp;nbsp;Posix Attribute Mapping using posixAccount and posixGroup Object classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To implement the above mechanisms you need to configure the SSSD in the Linux System as a root user as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Installing Packages&lt;/h3&gt;
&lt;div class=&quot;MsoListParagraph&quot;&gt;
yum install sssd sssd-client krb5-workstation samba
openldap-clients oddjob-mkhomedir sssd-libwbclient sssd-libwbclient-devel&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Configuring the DNS Resolver&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Edit the /etc/resolv.conf and verify the DNS Server entries are point to the naming servers and also search domain. &amp;nbsp;For example sample resolve.conf file is given below:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
domain ad.example.edu&lt;/div&gt;
&lt;div&gt;
search&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;ad.example.edu&lt;/div&gt;
&lt;div&gt;
nameserver ns1.example.edu&lt;/div&gt;
&lt;div&gt;
nameserver ns2.example.edu&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Based on the above configuration it will obtain the ip address of the linux machine host from the domain naming service (DNS).&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .5in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Configuring the Kerberos&lt;/h3&gt;
&lt;div&gt;
This configuration is required for Active Directory Authentication using Kerberos protocol.&lt;/div&gt;
&lt;div&gt;
Edit the /etc/krb5.conf file and configure the Active Directory logging, libdefaults, realms, and domain realm sections as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
[logging]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;default = FILE:/var/log/krb5libs.log&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;kdc = FILE:/var/log/krb5kdc.log&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;admin_server = FILE:/var/log/kadmind.log&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
[libdefaults]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;default_realm = AD.EXAMPLE.EDU&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;dns_lookup_realm = true&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;dns_lookup_kdc = true&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;ticket_lifetime = 24h&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;renew_lifetime = 7d&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;forwardable = true&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;rdns = false&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
[realms]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;AD.EXAMPLE.EDU = {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; kdc = dcs01.ad.example.edu&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; admin_server = dcs01.ad.example.edu&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; default_domain = ad.example.edu&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
[domain_realm]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;.ad.example.edu&amp;nbsp;=AD.EXAMPLE.EDU&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;ad.example.edu&amp;nbsp;= AD.EXAMPLE.EDU&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The realms and domain_realm section is required only if the domain discover service not available.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the&amp;nbsp;libdefaults&amp;nbsp;section change the default_realm parameter according your environment.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the realms section change &amp;nbsp;AD.EXAMPLE.EDU realms with your actual realm, The realm parameters kdc, admin_server, and default_domain values needs to be changed according to your environment.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In domain_realm section change realm names according to your environment.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Configuring the Samba&lt;/h3&gt;
&lt;div&gt;
Configure the Samba Server to connect the Active Directory server. Edit the /etc/samba/smb.conf and add the following content under [global] section.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
[global]&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
workgroup = EXAMPLE&lt;/div&gt;
&lt;div&gt;
client signing = yes&lt;/div&gt;
&lt;div&gt;
client use spnego = yes&lt;/div&gt;
&lt;div&gt;
kerberos method = secrets and keytab&lt;/div&gt;
&lt;div&gt;
log file = /var/log/samba/%m.log&lt;/div&gt;
&lt;div&gt;
password server = dcs01.ad.example.edu&lt;/div&gt;
&lt;div&gt;
realm = AD.EXAMPLE.EDU&lt;/div&gt;
&lt;div&gt;
security = ads&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the global section you need to modify the workgroup, password server, and realm according to your environment. The workgroup details are available for the ad object in the Active Directory User and Computer Console as follows:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Right Click your Suffix (ad.example.edu) --&amp;gt; Find --&amp;gt; Enter Name (Search User Name) --&amp;gt; &amp;nbsp;Search Result --&amp;gt; Click Search Result --&amp;gt; Click Account --&amp;gt; User Logon Name (pre-Windows 2000).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The&amp;nbsp;User Logon Name (pre-Windows 2000) value is your workgroup value.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The password server value is your ad domain controller.&lt;/div&gt;
&lt;div&gt;
The realm is your ad realm.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Joining the Linux Machine with Domain Controller&lt;/h3&gt;
&lt;div&gt;
&amp;nbsp; After configuring the Steps 3 and 4, you need to perform the following tasks to join the Linux Machine with AD Domain Controller:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 5.1 Obtain Kerberos Credentials:&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp;The following command being used to obtain the kerberos credentials from the AD domain controller:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;kinit administrator&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;After executing the above command and it will append the default realm with administrator account. For example user name will be administrator@AD.EXAMPLE&amp;gt;EDU. It will also ask the administrator password to authenticate user against AD domain controller. After successful authentication, kerberos key tab file will be generated in the /etc/krb5.keytab.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;If you found any issue while obtaining the Kerberos credentials from the AD domain controllers, you can execute the following command to trace the kerberos authentication errors in the console.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
KRB5_TRACE=/dev/stdout kinit administrator&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;5.2 Joining Linux Machine to Domain Controller:&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;After executing the step 5.1 successfully, you can execute the following command to join the Linux Computer to the AD Domain controller.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
net ads join -k&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
After executing the above command successfully, the Linux machine will be added into the AD Domain controller. You can find the Linux machine name in the DomainJoinStaging orgainizational unit under ad.example.edu. The sample computer path is CN=testlinuxmachine,OU=DomainJoinStaging,DC=ad,DC=example,DC=edu&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The CN is your Linux Machine Name. In my example my machine name is testlinuxmachine.ad.example.edu&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can verify computer name according your environment.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
6. Configuring the SSSD authentication&lt;/h3&gt;
&lt;div&gt;
Execute the following command to enable the SSSD authentication against the Active Directory:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
authconfig --update --enablesssd --enablesssdauth –-enablemkhomedir&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It will enable the sssd authentication and the changes will be written into the /etc/pam.d/ directory and also it will generate the nsswitch.conf file in the /etc/ directory.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
7. Implementing the SSSD Mechanisms&lt;/h3&gt;
&lt;div&gt;
After executing the step 6 it will enable the sssd authentication for the Linux Machine against with AD domain controller. But it will not create the /etc/sssd/sssd.conf file. You need to create the sssd.conf file under /etc/sssd/ directory and add the following content in the sssd.conf file.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
[sssd]&lt;/div&gt;
&lt;div&gt;
domains = &amp;nbsp;ad.example.edu&lt;/div&gt;
&lt;div&gt;
services = nss, pam&lt;/div&gt;
&lt;div&gt;
config_file_version = 2&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
[domain/ad.example.edu]&lt;/div&gt;
&lt;div&gt;
id_provider = ad&lt;/div&gt;
&lt;div&gt;
auth_provider = ad&lt;/div&gt;
&lt;div&gt;
access_provider = ad&lt;/div&gt;
&lt;div&gt;
chpass_provider = ad&lt;/div&gt;
&lt;div&gt;
ad_domain = ad.example.edu&lt;/div&gt;
&lt;div&gt;
ad_server = dcs01.ad.example.edu&lt;/div&gt;
&lt;div&gt;
ad_hostname = dcs01.ad.example.edu&lt;/div&gt;
&lt;div&gt;
ldap_schema = ad&lt;/div&gt;
&lt;div&gt;
cache_credentials = true&lt;/div&gt;
&lt;div&gt;
debug_level = 1&lt;/div&gt;
&lt;div&gt;
ldap_idmap_default_domain_sid = &amp;lt;Domain SID&amp;gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
krb5_auth_timeout = 30&lt;/div&gt;
&lt;div&gt;
krb5_realm = ad.example.edu&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the sssd section you need to modify domains, and services according to your environment. In my example domains value is ad.exampel.edu and services values are nss, pam, and pac.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The naming service switch (nss) being used to retrieve the Active Directory Identity Objects. For example id and groups.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The Pluggable Authentication Module (PAM) is being used to authenticate the user against the active directory.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can configure the additional services as per your requirement. For example sudo service is being used to grant the Admin Sudo Access for certain users in the Linux System.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The [domain/ad.example.edu] section you need to modify provider name parameters for authentication, authorization, and changing passwords. In my example I have selected my provider name is ad because I am going to integrate Linux System with Active Directory. This provider is a generic provider for ldap. The example providers given below&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
id_provider = ad&lt;/div&gt;
&lt;div&gt;
auth_provider = ad&lt;/div&gt;
&lt;div&gt;
access_provider = ad&lt;/div&gt;
&lt;div&gt;
chpass_provider = ad&lt;br /&gt;
&lt;br /&gt;
You need to modify the ad domain controller parameter as follows:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
ad_domain = ad.example.edu&lt;/div&gt;
&lt;div&gt;
ad_server = dcs01.ad.example.edu&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: &#39;Times New Roman&#39;; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;&quot;&gt;
&lt;div style=&quot;margin: 0px;&quot;&gt;
ad_hostname = dcs01.ad.example.edu&lt;/div&gt;
&lt;/div&gt;
ldap_idmap_default_domain_sid = &amp;lt;Domain SID&amp;gt;&lt;br /&gt;
krb5_realm = ad.example.edu&lt;br /&gt;
&lt;br /&gt;
You need to modify the cache credential parameter because user needs to login off line.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; 7.1 ID Mapping Using ObjectSID in AD&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;This configuration copied under &amp;nbsp;&amp;nbsp;[domain/ad.example.edu] section and it is required because it will create the user home directory and also it will generate the uid and guid based on the active directory objectSid parameter.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;ldap_idmap_range_min = 1824600000&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;ldap_idmap_range_size = 2000000&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;ldap_id_mapping = true&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;fallback_homedir = /home/%u&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;In the above configuration ldap_idmap_range_min and ldap_idmap_range_size parameters are optional. If you getting any ObjectSid to UID or GID conversion error, you need to include ldap idmap range parameters, otherwise it not required.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; You can specify the default home directory parameter fallback_homedir value to create the home directory after user login successfully to the Linux System.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;The ldap_id_mapping parameter value is true by default.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; 7.2 Posix Attribute Mapping using posixAccount and posixGroup Object classes&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; The following parameters needs to be modified when implementing the Posix Attribute mechanism.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ldap_id_mapping = false&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;ldap_user_home_directory = unixHomeDirectory&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.2.1 Active Directory User Configuration&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The following modification needs to be done to implement with Posix Attribute Mechanism for the Active Directory User.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a) You need to include the PosixAccount Object class in the User Object&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b) You need to add the following attributes in the user object after including the PosixAccount Object class. They are&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;uidNumber:&amp;nbsp;&lt;/b&gt;&amp;nbsp;The uidNumber is mapped to the unix system user uid&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;gidNumber:&amp;nbsp;&lt;/b&gt;&amp;nbsp;The gidNumber is mapped to the unix system group gid. This is a primary group id for the unix system and it is a single valued attribute. This value should map with active directory group gidNumber&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&lt;b&gt;unixHomeDirectory : &amp;nbsp;&lt;/b&gt;The&lt;/span&gt;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&amp;nbsp;unixHomeDirectory mapped to the unix System User Home Directory&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&lt;b&gt;loginShell: &lt;/b&gt;&amp;nbsp;The loginshell mapped to default shell for the linux system user.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The user modification ldif script is given below using posixAccount object class for the existing user:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
ldapmodify -x -D &amp;lt;Admin DN&amp;gt;
-W -h &amp;lt;Ldap Host&amp;gt; -p 389&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
dn:
CN=12345678,OU=people,DC=ad,DC=example,DC=edu&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
changetype: modify&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
add: objectClass&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
objectClass: posixAccount&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
-&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
replace: gidNumber&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
gidNumber: 50001&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
-&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
replace: uidNumber&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
uidNumber:&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;12345678&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
-&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
replace: unixHomeDirectory&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
unixHomeDirectory: /home/&lt;o:p&gt;&lt;/o:p&gt;12345678&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
-&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
add: loginShell&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .75in;&quot;&gt;
loginShell: /bin/bash&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.2.2 Active Directory Group Configuration&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The following modification needs to be done to implement with Posix Attribute Mechanism for the Active Directory Group.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a) You need to include the PosixGroup Object class in the Group Object&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b) You need to add the following attributes in the group object after including the PosixGroup Object class. They are&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;gidNumber:&amp;nbsp;&lt;/b&gt;&amp;nbsp;The gidNumber is mapped to the unix system group gid&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 15.6933345794678px;&quot;&gt;&lt;b&gt;member : &amp;nbsp;&lt;/b&gt;The&lt;/span&gt;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp;member field will mapped to the Linux User Groups.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;The group modification ldif script is given below using posixGroup object class for the existing group:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dn: CN=developer,OU=Groups,DC=ad,DC=example,DC=edu&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;changetype: modify&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; replace: ObjectClass&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ObjectClass: top&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ObjectClass: Group&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ObjectClass: posixGroup&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; replace: gidNumber&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gidNumber: 50001&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; add: member&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Member: CN=12345678,OU=people,DC=ad,DC=example,DC=edu&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Note: The user object gidNumber must match with group object gidNumber. This values should be same while mapping the user to group to create the Linux System User.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
8. Changing the Ownership&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
Execute the following command to change the Owner ship and also permission to read the sssd.conf file as a root user in the /etc/sssd directory.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
chown root:root sssd.conf&lt;/div&gt;
&lt;div&gt;
chmod 600 sssd.conf&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
9. Restart the SSSD Service&lt;/h3&gt;
Execute the following command to restart the sssd service.&lt;br /&gt;
&lt;br /&gt;
service sssd restart&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
10. Testing the SSSD Authentication&lt;/h3&gt;
Use any ssh client or putty. I am showing the example using the ssh in the command line to test the sssd authentication against active directory.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ssh -l testuser@ad.example.edu sssdlab.ad.example.edu&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;After entering the above command it will ask the user password and enter the user password and it will login to the Linux System and automatically create the home directory and default shell as you supplied in the sssd.conf file or from the ad if your using the posix attribute mechanism.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
11. SSSD Log Location&lt;/h3&gt;
If you found any error while authenticating the user against active directory. The following configuration needs to be done to logging the data as a debug mode.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;a) Edit the /etc/sssd/sssd.conf file&lt;br /&gt;
&amp;nbsp; &amp;nbsp;b) Add the debug_level=9 parameter value under [domain/ad.example.edu] section&lt;br /&gt;
&amp;nbsp; &amp;nbsp;c) The following log files will be created in the /var/log/sssd directory:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;krb5_child.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;ldap_child.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;sssd_ad.example.edu.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;sssd.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;sssd_nss.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;sssd_pam.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;If you found any error while starting the sssd service, check sssd.log file.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;If you found any authentication errors and getting the data from the AD, you can check sssd_ad.example.edu.log for authentication and extracting the data from AD.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;If you can verify request and response details from AD in the ldap_child.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; If you can verify Kerberos request and response details from AD in the krb5_child.log&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;You can check nss service error in sssd_nss.log and pam service errors in sssd_pam.log&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
12. Clearing SSSD Cache from memory.&lt;/h3&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; If you found any errors with related to ID Mapping after switching the ID Mapping to PosixAttribute Mapping vice versa. You need to clean the sssd data base and also sssd mem cache.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
a) stop the sssd service as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; service sssd stop&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
b) remove the database as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; rm&amp;nbsp;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;/var/lib/sssd/db/*&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;c) remove the mem cache as follows:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6666669845581px; line-height: 15.6933345794678px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;rm&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Calibri, sans-serif; font-size: 11pt; line-height: 107%;&quot;&gt;/var/lib/sssd/mc/*&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;d) Start the SSSD service as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;service sssd start&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
13. Common Errors&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
13.1&amp;nbsp;pam_access(sshd:account): access denied for user `user1@example.edu&#39; from `machine.example.edu&#39;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;Cause:&amp;nbsp;&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; The Linux System Enforce with Access Control Policies in the access.conf file.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;Solution:&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; Add the User or Group info into the /etc/security/access.conf file and the issue will be resolved. The access.conf sample configuration is given below:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;+ : (user1) : ALL&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Calibri&amp;quot;,sans-serif; font-size: 11.0pt; line-height: 107%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;&quot;&gt;13.2 pam_sss(sshd:chauthtok):
User info message: Password change failed. Server message: Old password not
accepted&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;The above error thrown while changing the password first logon in the SSSD Linux machine and also creating the home directory first time.&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
&amp;nbsp;Cause:&amp;nbsp;&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp;The Client Linux SSSD machine establish the connectivity from Work Station to Kerberos Authentication Server taking more than kerberos auth timeout value when changing the password on first logon.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
&amp;nbsp; &amp;nbsp;Solution:&lt;/h4&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; Edit the /etc/sssd/sssd/conf file and increase the krb5_auth_timeout value. The default value is 6 seconds. You need to increase the timeout value according to your environment. For example &amp;nbsp;krb5_auth_timeout value is 60 seconds.&lt;/div&gt;
&lt;/div&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;/h3&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/2271577743406453367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/06/sssd-linux-system-integrate-with-active.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/2271577743406453367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/2271577743406453367'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/06/sssd-linux-system-integrate-with-active.html' title='SSSD Linux System Integrate With Active Directory'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-4642971566805705452</id><published>2015-05-19T10:55:00.000-07:00</published><updated>2015-05-19T10:55:20.691-07:00</updated><title type='text'>How to Export Active Directory Permissions</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
I want to export the Active Directory permissions using Get-ADPermission Command let as follows:&lt;br /&gt;
&lt;br /&gt;
$orgunit = &quot;Ou=Groups,dc=example,dc=edu&quot;&lt;br /&gt;
$filename=&quot;Groups-Permissions.csv&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get-AdObject -Filter &#39;Name -like &quot;*&quot;&#39; -SearchBase $orgunit -SearchScope &quot;Subtree&quot; -Properties CanonicalName | Select @{Name=&quot;Identity&quot;;Expression={($_.CanonicalName)}} | Get-ADPermission | Select @{ Name=&#39;AccessRights&#39;;Expression={[string]::join(&quot;,&quot;, ($_.AccessRights))}},@{ Name=&#39;ExtendedRights&#39;;Expression={[string]::join(&quot;,&quot;, ($_.ExtendedRights))}},@{ Name=&#39;ChildObjectTypes&#39;;Expression={[string]::join(&quot;,&quot;, ($_.ChildObjectTypes))}},InheritedObjectType,@{ Name=&#39;Properties&#39;;Expression={[string]::join(&quot;,&quot;, ($_.Properties))}},Deny,InheritanceType,User,Identity,IsInherited,IsValid | &amp;nbsp;Export-csv $filename&lt;br /&gt;
&lt;br /&gt;
In the above command let I have used the following command lets to extract the ad permissions from ou=groups container:&lt;br /&gt;
&lt;br /&gt;
1. Get-ADObject&lt;br /&gt;
2. Select&lt;br /&gt;
3. Get-ADPermission&lt;br /&gt;
4. Select&lt;br /&gt;
5. Export-CSV&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Get-ADObject&lt;/h3&gt;
&amp;nbsp;Above command lets being used to retrieve all the objects under the ou=groups container.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Get-AdObject -Filter &#39;Name -like &quot;*&quot;&#39; -SearchBase $orgunit -SearchScope &quot;Subtree&quot; -Properties CanonicalName&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;I have selected the property called CanonicalName, It contains the Identity of the AD Object. For example:&lt;br /&gt;
&lt;br /&gt;
DistinguishedName: ou=Groups,dc=example,dc=edu&lt;br /&gt;
CanonicalName : example.edu/Groups&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Select&lt;/h3&gt;
&amp;nbsp; Select @{Name=&quot;Identity&quot;;Expression={($_.CanonicalName)}}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Mapping the &amp;nbsp;CanonicalName to Identity attribute because Get-AdPermission command lets expecting the Identity value to retrieve the AD Permissions from the object.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Get-ADPermission&lt;/h3&gt;
&lt;div&gt;
Retrieving all the permission in the container based on the Identity attribute from the step 2.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Get-ADPermission&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Select&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It is being used to select the attributes from the Get-ADPermission command let object.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Select @{ Name=&#39;AccessRights&#39;;Expression={[string]::join(&quot;,&quot;, ($_.AccessRights))}},@{ Name=&#39;ExtendedRights&#39;;Expression={[string]::join(&quot;,&quot;, ($_.ExtendedRights))}},@{ Name=&#39;ChildObjectTypes&#39;;Expression={[string]::join(&quot;,&quot;, ($_.ChildObjectTypes))}},InheritedObjectType,@{ Name=&#39;Properties&#39;;Expression={[string]::join(&quot;,&quot;, ($_.Properties))}},Deny,InheritanceType,User,Identity,IsInherited,IsValid&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Export-CSV&amp;nbsp;&lt;/h3&gt;
&lt;div&gt;
Exporting the selected attributes to a csv file:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Export-csv $filename&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/4642971566805705452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/05/how-to-export-active-directory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4642971566805705452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4642971566805705452'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/05/how-to-export-active-directory.html' title='How to Export Active Directory Permissions'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-1410628237326137311</id><published>2015-02-27T13:46:00.000-08:00</published><updated>2015-02-27T13:46:18.439-08:00</updated><title type='text'>How to develop SAML-ECP Custom Client</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Pre-Requisite:&lt;/h3&gt;
1. Installed and Configured Shibboleth IDP 3.0&lt;br /&gt;
2. Installed and Configured Shibboleth native SP 2.5.3 with ECP Enabled&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Environment:&lt;/h3&gt;
1. JDK 1.7&lt;br /&gt;
2. Eclipse&lt;br /&gt;
3. Gradle 1.5&lt;br /&gt;
4. Open SAML2.6.4&lt;br /&gt;
5. Apache Http Client 4.4&lt;br /&gt;
6. SL4J 1.7.10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Developing SAMl-ECP client&lt;/h3&gt;
The following tasks needs to be performed to build the ECP clients:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
1. Sending Request from ECP&amp;nbsp; to SP&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
2. Sending Request from ECP&amp;nbsp; to IDP&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
3. Sending Request from ECP&amp;nbsp; to SP &amp;nbsp; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Sending Request from ECP&amp;nbsp; to SP &lt;/h3&gt;
&amp;nbsp;Accessing the Secure URL through Enhanced Client Proxy(ECP) using the Get Request. In get request you need to add two header fields in the request:&lt;br /&gt;
&lt;br /&gt;
1. Accept: application/vnd.paos+xml&lt;br /&gt;
2. PAOS: ver=&#39;url:liberty:paos:2003-08&#39;;&#39;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Please refer example code : EcpRequestInterceptor&amp;nbsp; for adding the header variable in the request. &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;1.1 Send the Get Request Secure URL from ECP to SP with PAOS Header&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; The PAOS header variables are added in the EcpRequestInterceptor class. &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope accessProtectedPage()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Envelope envelope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;HttpGet request= new HttpGet(ecp.getProtectedUrl());&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CloseableHttpResponse httpResponse =&amp;nbsp; client.execute(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(httpResponse != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(httpResponse.getStatusLine().getStatusCode()==200)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;HttpEntity entity = httpResponse.getEntity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;envelope=convertRequestToSoap(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!envelope.getBody().getUnknownXMLObjects().isEmpty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(envelope.getBody().getUnknownXMLObjects(AuthnRequest.DEFAULT_ELEMENT_NAME) != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;logger.info(&quot;Auethentication Access&quot;+convertSoapToString(envelope));&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;throw new RuntimeException(&quot;Invalid ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;throw new RuntimeException(&quot;Invalid ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;EntityUtils.consume(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;throw new RuntimeException(httpResponse.getStatusLine().getStatusCode()+&quot; - &quot; +httpResponse.getStatusLine().getReasonPhrase());&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (ClientProtocolException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return envelope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 1.2 SP will send the SOAP Response to ECP with PAOS Request&amp;nbsp; in SOAP Headers and Authentication Request Statement in Soap Body.&lt;br /&gt;
&lt;br /&gt;
The Ecp response from the SP is shown below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;S:Envelope xmlns:S=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;S:Header&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;paos:Request xmlns:paos=&quot;urn:liberty:paos:2003-08&quot; S:actor=&quot;http://schemas.xmlsoap.org/soap/actor/next&quot; S:mustUnderstand=&quot;1&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; responseConsumerURL=&quot;https://shib-sp.example.edu/Shibboleth.sso/SAML2/ECP&quot; service=&quot;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ecp:Request xmlns:ecp=&quot;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&quot; IsPassive=&quot;0&quot; S:actor=&quot;http://schemas.xmlsoap.org/soap/actor/next&quot; S:mustUnderstand=&quot;1&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml:Issuer xmlns:saml=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot;&amp;gt;https://shib-sp.example.edu/shibboleth&amp;lt;/saml:Issuer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:IDPList xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:IDPEntry ProviderID=&quot;https://shib-idp.example.edu/idp/shibboleth&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/samlp:IDPList&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ecp:Request&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ecp:RelayState xmlns:ecp=&quot;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&quot; S:actor=&quot;http://schemas.xmlsoap.org/soap/actor/next&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S:mustUnderstand=&quot;1&quot;&amp;gt;ss:mem:ec7e3978ddd1958ca9efb27be7c9445017daf9068b62c647cc398a4dfc73573c&amp;lt;/ecp:RelayState&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/S:Header&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;S:Body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:AuthnRequest xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AssertionConsumerServiceURL=&quot;https://shib-sp.example.edu/Shibboleth.sso/SAML2/ECP&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ID=&quot;_c06ac9aa1e8e172b920bd32435547b05&quot; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IssueInstant=&quot;2015-02-27T00:04:38Z&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ProtocolBinding=&quot;urn:oasis:names:tc:SAML:2.0:bindings:PAOS&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Version=&quot;2.0&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml:Issuer xmlns:saml=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot;&amp;gt;https://shib-sp.example.edu/shibboleth&amp;lt;/saml:Issuer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:NameIDPolicy AllowCreate=&quot;1&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:Scoping&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:IDPList&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:IDPEntry ProviderID=&quot;https://shib-idp.example.edu/idp/shibboleth&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/samlp:IDPList&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/samlp:Scoping&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/samlp:AuthnRequest&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/S:Body&amp;gt;&lt;br /&gt;
&amp;lt;/S:Envelope&amp;gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Sending the Authentication Request from ECP to IDP with PAOS and Authorization Headers&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;2.1 Detach the SP Soap Body and Create a new Soap Envelop and set the detached soap body to new envelop&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
You need to remove the SOAP headers from the SP Initial Secure URL response or You can copy the authentication request from the&amp;nbsp; SP Initial Secure URL response and build a new Soap Envelope. I have detached (copy) from the initial soap response and building the new soap request and sample code is given below: &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
public Envelope buildIdpAuthRequest(Envelope envelope)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope newAuthRequest = new EnvelopeBuilder().buildObject();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Body authBody= envelope.getBody();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; authBody.detach();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; newAuthRequest.setBody(authBody);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return newAuthRequest;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Sample Soap XML :&lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;soap11:Envelope xmlns:soap11=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;S:Body xmlns:S=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:AuthnRequest xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AssertionConsumerServiceURL=&quot;https://shib-sp.example.edu/Shibboleth.sso/SAML2/ECP&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ID=&quot;_b2c92bc8216ff317a5c42d797a7cd8ca&quot; IssueInstant=&quot;2015-02-27T18:49:37Z&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ProtocolBinding=&quot;urn:oasis:names:tc:SAML:2.0:bindings:PAOS&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Version=&quot;2.0&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml:Issuer xmlns:saml=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot;&amp;gt;https://shib-sp.example.edu/shibboleth&amp;lt;/saml:Issuer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:NameIDPolicy AllowCreate=&quot;1&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:Scoping&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlp:IDPList&amp;gt;&amp;lt;samlp:IDPEntry ProviderID=&quot;https://shib-idp.example.edu/idp/shibboleth&quot;/&amp;gt;&amp;lt;/samlp:IDPList&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/samlp:Scoping&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/samlp:AuthnRequest&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/S:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap11:Envelope&amp;gt; &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
2.2 Send the Authentication Request to IDP with PAOS and Authorization Headers&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
You need to add the following header variables into the post request because these variables are required&amp;nbsp; for IDP ECP profile:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
1. Accept: application/vnd.paos+xml&lt;br /&gt;
2. PAOS: ver=&#39;url:liberty:paos:2003-08&#39;;&#39;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&#39;&lt;br /&gt;
3. Authorization: Basic&amp;nbsp; + User Name and password encode with base 64.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The sample code is given below:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope sendAuthenticationToIdp(String authRequestXml)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Authentication Request from ECP to IDP :&quot; + authRequestXml);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envelope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpPost request= new HttpPost(ecp.getIdpUrl());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addHeader(HttpHeaders.AUTHORIZATION, &quot;Basic &quot;+ Base64.encodeBytes((ecp.getUserName()+&quot;:&quot;+ecp.getPassword()).getBytes()));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.setEntity(new StringEntity(authRequestXml));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnsupportedEncodingException e1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseableHttpResponse httpResponse =&amp;nbsp; client.execute(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse.getStatusLine().getStatusCode()==200)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity entity = httpResponse.getEntity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envelope=convertRequestToSoap(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!envelope.getBody().getUnknownXMLObjects().isEmpty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(envelope.getBody().getUnknownXMLObjects(Response.DEFAULT_ELEMENT_NAME) != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Auethentication Access&quot;+convertSoapToString(envelope));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org.opensaml.saml2.core.Response samlResp=(org.opensaml.saml2.core.Response)envelope.getBody().getUnknownXMLObjects(org.opensaml.saml2.core.Response.DEFAULT_ELEMENT_NAME).get(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(samlResp.getStatus().getStatusCode().getValue().equals(StatusCode.SUCCESS_URI))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Status&amp;nbsp; :&quot;+samlResp.getStatus().getStatusCode().getValue());&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StatusDetail detail= (StatusDetail)samlResp.getStatus().getStatusDetail().getUnknownXMLObjects(StatusDetail.DEFAULT_ELEMENT_NAME).get(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;SAML Authentication Failed &quot;+samlResp.getStatus().getStatusCode().getValue() + &quot; - &quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;Invalid IDP ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;Invalid ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EntityUtils.consume(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // it will throw 403 error due to invalid password or invalid user name or authentication failed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(httpResponse.getStatusLine().getStatusCode()+&quot; - &quot; +httpResponse.getStatusLine().getReasonPhrase());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ClientProtocolException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return envelope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
2.3 IDP will send the SOAP response to ECP with SAML Response in soap body and ECP response in SOAP Headers.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
The sample Authentication Successful response from IDP as follows:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;soap11:Envelope xmlns:soap11=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap11:Header&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ecp:Response xmlns:ecp=&quot;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AssertionConsumerServiceURL=&quot;https://shib-sp.example.edu/Shibboleth.sso/SAML2/ECP&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap11:actor=&quot;http://schemas.xmlsoap.org/soap/actor/next&quot; soap11:mustUnderstand=&quot;1&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;samlec:GeneratedKey xmlns:samlec=&quot;urn:ietf:params:xml:ns:samlec&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soap11:actor=&quot;http://schemas.xmlsoap.org/soap/actor/next&quot;&amp;gt;Saml keys&amp;lt;/samlec:GeneratedKey&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/soap11:Header&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap11:Body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml2p:Response xmlns:saml2p=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Destination=&quot;https://shib-sp.example.edu/Shibboleth.sso/SAML2/ECP&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ID=&quot;_c860f132c4115581218971d92a52f500&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InResponseTo=&quot;_b2c92bc8216ff317a5c42d797a7cd8ca&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IssueInstant=&quot;2015-02-27T18:49:37.867Z&quot; Version=&quot;2.0&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml2:Issuer xmlns:saml2=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot;&amp;gt;https://shib-idp.example.edu/idp/shibboleth&amp;lt;/saml2:Issuer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:Signature xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:SignedInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:CanonicalizationMethod Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:SignatureMethod Algorithm=&quot;http://www.w3.org/2001/04/xmldsig-more#rsa-sha512&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:Reference URI=&quot;#_c860f132c4115581218971d92a52f500&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:Transforms&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:Transform Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:Transforms&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:DigestMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#sha512&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:DigestValue&amp;gt;Digest Base 64 encoded value &amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:SignedInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:SignatureValue&amp;gt;Signature Value Base 64 encoded&amp;lt;/ds:SignatureValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:X509Certificate&amp;gt;Certificate&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:Signature&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml2p:Status&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml2p:StatusCode Value=&quot;urn:oasis:names:tc:SAML:2.0:status:Success&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/saml2p:Status&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;saml2:EncryptedAssertion xmlns:saml2=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:EncryptedData xmlns:xenc=&quot;http://www.w3.org/2001/04/xmlenc#&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Id=&quot;_37f9853b6561b3722b3691392ace994b&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Type=&quot;http://www.w3.org/2001/04/xmlenc#Element&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:EncryptionMethod Algorithm=&quot;http://www.w3.org/2009/xmlenc11#aes128-gcm&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:KeyInfo xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:EncryptedKey Id=&quot;_7dc4db379206ea3e491f5e6e15bbf6fb&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Recipient=&quot;https://shib-sp.example.edu/shibboleth&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:EncryptionMethod Algorithm=&quot;http://www.w3.org/2009/xmlenc11#rsa-oaep&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:DigestMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc11:MGF xmlns:xenc11=&quot;http://www.w3.org/2009/xmlenc11#&quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Algorithm=&quot;http://www.w3.org/2009/xmlenc11#mgf1sha1&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xenc:EncryptionMethod&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ds:X509Certificate&amp;gt;Certificate&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:CipherData&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:CipherValue&amp;gt;Cipher Value&amp;lt;/xenc:CipherValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xenc:CipherData&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xenc:EncryptedKey&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:CipherData&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xenc:CipherValue&amp;gt;Certificate&amp;lt;/xenc:CipherValue&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xenc:CipherData&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xenc:EncryptedData&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/saml2:EncryptedAssertion&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/saml2p:Response&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/soap11:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap11:Envelope&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Sending the IDP Authentication Response from ECP to SP to access the Secure URL Access.&amp;nbsp; &lt;/h3&gt;
3.1 Add Initial Secure URL Access Relay State in IDP Soap Response Headers&lt;br /&gt;
&lt;br /&gt;
The RelayState information is extracted from the initial Sp Secure Access Response from the SP Soap Envelop. This information is required in the soap header because, the SP going to accept the idp authentication SAML response and also make a decision to allow or denied requested secure page. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RelayState relayState= (RelayState)secureResourceResponse.getHeader().getUnknownXMLObjects(RelayState.DEFAULT_ELEMENT_NAME).get(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; relayState.detach();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Header header = new HeaderBuilder().buildObject();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; header.getUnknownXMLObjects().clear();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; header.getUnknownXMLObjects().add(relayState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; idpAuthResponse.setHeader(header);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.2 Extract the AssertionConsumerService URL from the IDP Soap Response &lt;br /&gt;
&lt;br /&gt;
This assertionConsumerUrl parameter extracted from the Soap Header from the IDP Authentication soap response. This assertionConsumerUrl is being used to post the IDP Authentication response with Relay State header from ECP to Service provider post request.&lt;br /&gt;
&lt;br /&gt;
String assertionConsumerUrl=((Response)idpAuthResponse.getHeader().getUnknownXMLObjects(Response.DEFAULT_ELEMENT_NAME).get(0)).getAssertionConsumerServiceURL(); &lt;br /&gt;
&lt;br /&gt;
3.3 Send IDP Authentication response to Service Provider with PAOS and Conetent-Type headers.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Sample Code:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope sendAuthResponseToSp(String authResponseXml,String consumeServiceUrl)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envelope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpPost request= new HttpPost(consumeServiceUrl);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addHeader(HttpHeaders.CONTENT_TYPE, EcpFlowConstants.PAOS_CONTENT_TYPE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.setEntity(new StringEntity(authResponseXml));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnsupportedEncodingException e1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseableHttpResponse httpResponse =&amp;nbsp; client.execute(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse.getStatusLine().getStatusCode()==200)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity entity = httpResponse.getEntity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; entity.writeTo(System.out);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Cookies&amp;nbsp;&amp;nbsp; &quot;+store.getCookies());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EntityUtils.consume(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(httpResponse.getStatusLine().getStatusCode()+&quot; - &quot; +httpResponse.getStatusLine().getReasonPhrase());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ClientProtocolException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return envelope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Example Code:&lt;/h3&gt;
&lt;br /&gt;
I have classified the example code 4 classes. They are &lt;br /&gt;
&lt;br /&gt;
1. ECP Object&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; This object is being used to capture the ECP Endpoint IDP Url, Protected Resource from the SP, User and Password to authenticate the IDP Server&lt;br /&gt;
&lt;br /&gt;
2.&amp;nbsp; EcpRequestInterceptor&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; This object is being used to add the ECP headers in each request.&lt;br /&gt;
&lt;br /&gt;
3. EcpClientFlow&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; This object being used to send the GET, POST request to IDP and SP using apache HttpClient.&lt;br /&gt;
&lt;br /&gt;
4. EcpClient&lt;br /&gt;
&lt;br /&gt;
This object is being used to Initialize the SAML Boot strap, and Interacting with EcpClientFlow object invoking the various request such as Accessing the Protected Page, Authenticating User from the IDP, and Finally Send the Authenticated IDP Response to Service Provider. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Sample Code is given below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
package edu.example.ecp.client;&lt;br /&gt;
&lt;br /&gt;
public class Ecp &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String idpUrl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String protectedUrl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String userName;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String password;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getIdpUrl() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return idpUrl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setIdpUrl(String idpUrl) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.idpUrl = idpUrl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getProtectedUrl() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return protectedUrl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setProtectedUrl(String protectedUrl) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.protectedUrl = protectedUrl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getUserName() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return userName;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setUserName(String userName) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.userName = userName;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getPassword() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return password;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setPassword(String password) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.password = password;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
package edu.example.ecp.client;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.StringWriter;&lt;br /&gt;
import java.io.UnsupportedEncodingException;&lt;br /&gt;
import java.net.ProxySelector;&lt;br /&gt;
&lt;br /&gt;
import javax.xml.transform.Source;&lt;br /&gt;
import javax.xml.transform.Transformer;&lt;br /&gt;
import javax.xml.transform.TransformerConfigurationException;&lt;br /&gt;
import javax.xml.transform.TransformerException;&lt;br /&gt;
import javax.xml.transform.TransformerFactory;&lt;br /&gt;
import javax.xml.transform.TransformerFactoryConfigurationError;&lt;br /&gt;
import javax.xml.transform.dom.DOMSource;&lt;br /&gt;
import javax.xml.transform.stream.StreamResult;&lt;br /&gt;
&lt;br /&gt;
import org.apache.http.HttpEntity;&lt;br /&gt;
import org.apache.http.HttpHeaders;&lt;br /&gt;
import org.apache.http.client.ClientProtocolException;&lt;br /&gt;
import org.apache.http.client.CookieStore;&lt;br /&gt;
import org.apache.http.client.config.CookieSpecs;&lt;br /&gt;
import org.apache.http.client.config.RequestConfig;&lt;br /&gt;
import org.apache.http.client.methods.CloseableHttpResponse;&lt;br /&gt;
import org.apache.http.client.methods.HttpGet;&lt;br /&gt;
import org.apache.http.client.methods.HttpPost;&lt;br /&gt;
import org.apache.http.entity.StringEntity;&lt;br /&gt;
import org.apache.http.impl.client.BasicCookieStore;&lt;br /&gt;
import org.apache.http.impl.client.CloseableHttpClient;&lt;br /&gt;
import org.apache.http.impl.client.HttpClientBuilder;&lt;br /&gt;
import org.apache.http.impl.client.HttpClients;&lt;br /&gt;
import org.apache.http.impl.client.LaxRedirectStrategy;&lt;br /&gt;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;&lt;br /&gt;
import org.apache.http.impl.conn.SystemDefaultRoutePlanner;&lt;br /&gt;
import org.apache.http.util.EntityUtils;&lt;br /&gt;
import org.opensaml.common.SAMLObject;&lt;br /&gt;
import org.opensaml.common.xml.SAMLConstants;&lt;br /&gt;
import org.opensaml.saml1.core.AuthenticationStatement;&lt;br /&gt;
import org.opensaml.saml2.core.Assertion;&lt;br /&gt;
import org.opensaml.saml2.core.AuthnRequest;&lt;br /&gt;
import org.opensaml.saml2.core.Status;&lt;br /&gt;
import org.opensaml.saml2.core.StatusCode;&lt;br /&gt;
import org.opensaml.saml2.core.StatusDetail;&lt;br /&gt;
import org.opensaml.saml2.ecp.Response;&lt;br /&gt;
import org.opensaml.ws.soap.soap11.Body;&lt;br /&gt;
import org.opensaml.ws.soap.soap11.Envelope;&lt;br /&gt;
import org.opensaml.ws.soap.soap11.impl.EnvelopeBuilder;&lt;br /&gt;
import org.opensaml.xml.Configuration;&lt;br /&gt;
import org.opensaml.xml.io.Marshaller;&lt;br /&gt;
import org.opensaml.xml.io.MarshallingException;&lt;br /&gt;
import org.opensaml.xml.io.Unmarshaller;&lt;br /&gt;
import org.opensaml.xml.io.UnmarshallingException;&lt;br /&gt;
import org.opensaml.xml.parse.BasicParserPool;&lt;br /&gt;
import org.opensaml.xml.parse.ParserPool;&lt;br /&gt;
import org.opensaml.xml.parse.XMLParserException;&lt;br /&gt;
import org.opensaml.xml.util.Base64;&lt;br /&gt;
import org.slf4j.Logger;&lt;br /&gt;
import org.slf4j.LoggerFactory;&lt;br /&gt;
import org.w3c.dom.Document;&lt;br /&gt;
import org.w3c.dom.Element;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
package edu.example.ecp.client;&lt;br /&gt;
&lt;br /&gt;
public class EcpClientFlow &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Ecp ecp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private BasicParserPool pool;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private CloseableHttpClient client;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private CookieStore store;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Logger logger= LoggerFactory.getLogger(EcpClientFlow.class);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public EcpClientFlow(Ecp ecp)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.ecp=ecp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Creating the Parse Object&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pool= new BasicParserPool();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pool.setNamespaceAware(true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Creating the Pooled Http Connection Manager&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PoolingHttpClientConnectionManager manager= new PoolingHttpClientConnectionManager();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; manager.setMaxTotal(20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; manager.setDefaultMaxPerRoute(10);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Creating the Cookie Store store the Cookies&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; store= new BasicCookieStore();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Creating the Browser Compatible Request Cookie Object&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RequestConfig config= RequestConfig.custom().setCookieSpec(CookieSpecs.DEFAULT).build();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Building the Client Builder&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpClientBuilder clientBuildert= HttpClients.custom().setConnectionManager(manager)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .setDefaultCookieStore(store)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add the ECP Header every request&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addInterceptorFirst(new EcpRequestInterceptor())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Redirecting the Request&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .setRedirectStrategy(new LaxRedirectStrategy())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .setDefaultRequestConfig(config);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; client=clientBuildert.setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault())).build();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope accessProtectedPage()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envelope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpGet request= new HttpGet(ecp.getProtectedUrl());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseableHttpResponse httpResponse =&amp;nbsp; client.execute(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse.getStatusLine().getStatusCode()==200)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity entity = httpResponse.getEntity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envelope=convertRequestToSoap(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!envelope.getBody().getUnknownXMLObjects().isEmpty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(envelope.getBody().getUnknownXMLObjects(AuthnRequest.DEFAULT_ELEMENT_NAME) != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Auethentication Access&quot;+convertSoapToString(envelope));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;Invalid ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;Invalid ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EntityUtils.consume(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(httpResponse.getStatusLine().getStatusCode()+&quot; - &quot; +httpResponse.getStatusLine().getReasonPhrase());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ClientProtocolException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return envelope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope sendAuthenticationToIdp(String authRequestXml)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Authentication Request from ECP to IDP :&quot; + authRequestXml);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envelope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpPost request= new HttpPost(ecp.getIdpUrl());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addHeader(HttpHeaders.AUTHORIZATION, &quot;Basic &quot;+ Base64.encodeBytes((ecp.getUserName()+&quot;:&quot;+ecp.getPassword()).getBytes()));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.setEntity(new StringEntity(authRequestXml));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnsupportedEncodingException e1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseableHttpResponse httpResponse =&amp;nbsp; client.execute(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse.getStatusLine().getStatusCode()==200)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity entity = httpResponse.getEntity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envelope=convertRequestToSoap(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!envelope.getBody().getUnknownXMLObjects().isEmpty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(envelope.getBody().getUnknownXMLObjects(Response.DEFAULT_ELEMENT_NAME) != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Auethentication Access&quot;+convertSoapToString(envelope));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org.opensaml.saml2.core.Response samlResp=(org.opensaml.saml2.core.Response)envelope.getBody().getUnknownXMLObjects(org.opensaml.saml2.core.Response.DEFAULT_ELEMENT_NAME).get(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(samlResp.getStatus().getStatusCode().getValue().equals(StatusCode.SUCCESS_URI))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Status&amp;nbsp; :&quot;+samlResp.getStatus().getStatusCode().getValue());&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StatusDetail detail= (StatusDetail)samlResp.getStatus().getStatusDetail().getUnknownXMLObjects(StatusDetail.DEFAULT_ELEMENT_NAME).get(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;SAML Authentication Failed &quot;+samlResp.getStatus().getStatusCode().getValue() + &quot; - &quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;Invalid IDP ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(&quot;Invalid ECP Response&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EntityUtils.consume(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // it will throw 403 error due to invalid password or invalid user name or authentication failed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(httpResponse.getStatusLine().getStatusCode()+&quot; - &quot; +httpResponse.getStatusLine().getReasonPhrase());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ClientProtocolException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return envelope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope sendAuthResponseToSp(String authResponseXml,String consumeServiceUrl)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envelope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpPost request= new HttpPost(consumeServiceUrl);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addHeader(HttpHeaders.CONTENT_TYPE, EcpFlowConstants.PAOS_CONTENT_TYPE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.setEntity(new StringEntity(authResponseXml));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnsupportedEncodingException e1) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseableHttpResponse httpResponse =&amp;nbsp; client.execute(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse != null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(httpResponse.getStatusLine().getStatusCode()==200)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpEntity entity = httpResponse.getEntity();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; entity.writeTo(System.out);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info(&quot;Cookies&amp;nbsp;&amp;nbsp; &quot;+store.getCookies());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EntityUtils.consume(entity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // it will throw 403 error due to invalid password or invalid user name or authentication failed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new RuntimeException(httpResponse.getStatusLine().getStatusCode()+&quot; - &quot; +httpResponse.getStatusLine().getReasonPhrase());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ClientProtocolException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return envelope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope buildIdpAuthRequest(Envelope envelope)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope newAuthRequest = new EnvelopeBuilder().buildObject();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Body authBody= envelope.getBody();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; authBody.detach();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; newAuthRequest.setBody(authBody);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return newAuthRequest;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Envelope convertRequestToSoap(HttpEntity entity)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope envlope=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Document soapDoc;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; soapDoc = pool.parse(entity.getContent());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Unmarshaller unmarshall = Configuration.getUnmarshallerFactory().getUnmarshaller(soapDoc.getDocumentElement());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envlope=(Envelope)unmarshall.unmarshall(soapDoc.getDocumentElement());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IllegalStateException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (XMLParserException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnmarshallingException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return envlope;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String convertSoapToString(Envelope envelope)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String result=null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Marshaller marshaller= Configuration.getMarshallerFactory().getMarshaller(envelope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Element element= marshaller.marshall(envelope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Transformer transformer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; transformer = TransformerFactory.newInstance().newTransformer();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Source source = new DOMSource(element);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StringWriter writer= new StringWriter();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StreamResult output = new StreamResult(writer);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; transformer.transform(source, output);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; result=writer.getBuffer().toString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IllegalStateException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (MarshallingException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (TransformerConfigurationException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (TransformerFactoryConfigurationError e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (TransformerException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
package edu.example.ecp.client;&lt;br /&gt;
&lt;br /&gt;
import org.opensaml.common.xml.SAMLConstants;&lt;br /&gt;
&lt;br /&gt;
public interface EcpFlowConstants &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String PAOS_CONTENT_TYPE=&quot;application/vnd.paos+xml&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String PAOS_HEADER=SAMLConstants.PAOS_PREFIX.toUpperCase();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
package edu.example.ecp.client;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
import org.opensaml.DefaultBootstrap;&lt;br /&gt;
import org.opensaml.saml2.ecp.RelayState;&lt;br /&gt;
import org.opensaml.saml2.ecp.Response;&lt;br /&gt;
import org.opensaml.ws.soap.soap11.Envelope;&lt;br /&gt;
import org.opensaml.ws.soap.soap11.Header;&lt;br /&gt;
import org.opensaml.ws.soap.soap11.impl.HeaderBuilder;&lt;br /&gt;
import org.opensaml.xml.ConfigurationException;&lt;br /&gt;
import org.slf4j.Logger;&lt;br /&gt;
import org.slf4j.LoggerFactory;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class EcpClient {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static Logger logger= LoggerFactory.getLogger(EcpClient.class);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String SECURE_URL=&quot;https://shib-sp.example.edu/sample/&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String IDP_URL=&quot;https://shib-idp.example.edu/idp/profile/SAML2/SOAP/ECP&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String USER_NAME=&quot;&amp;lt;User Name&amp;gt;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String PASSWORD=&quot;&amp;lt;Password&amp;gt;&quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.Log&quot;,&quot;org.apache.commons.logging.impl.SimpleLog&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.simplelog.showdatetime&quot;,&quot;true&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.simplelog.log.org.apache.http&quot;,&quot;DEBUG&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.simplelog.log.org.apache.http.wire&quot;,&quot;DEBUG&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.de.tudarmstadt.ukp.shibhttpclient&quot;,&quot;DEBUG&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Ecp ecp= new Ecp();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ecp.setProtectedUrl(SECURE_URL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ecp.setIdpUrl(IDP_URL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ecp.setUserName(USER_NAME);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ecp.setPassword(PASSWORD);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultBootstrap.bootstrap();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; EcpClientFlow clientFlow= new EcpClientFlow(ecp);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope secureResourceResponse = clientFlow.accessProtectedPage();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope authRequest= clientFlow.buildIdpAuthRequest(secureResourceResponse);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Envelope idpAuthResponse = clientFlow.sendAuthenticationToIdp(clientFlow.convertSoapToString(authRequest));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String assertionConsumerUrl=((Response)idpAuthResponse.getHeader().getUnknownXMLObjects(Response.DEFAULT_ELEMENT_NAME).get(0)).getAssertionConsumerServiceURL();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RelayState relayState= (RelayState)secureResourceResponse.getHeader().getUnknownXMLObjects(RelayState.DEFAULT_ELEMENT_NAME).get(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; relayState.detach();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Header header = new HeaderBuilder().buildObject();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; header.getUnknownXMLObjects().clear();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; header.getUnknownXMLObjects().add(relayState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; idpAuthResponse.setHeader(header);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; clientFlow.sendAuthResponseToSp(clientFlow.convertSoapToString(idpAuthResponse), assertionConsumerUrl);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ConfigurationException e) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error(&quot;Ecp Client Error&quot;, e);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
package edu.example.ecp.client;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
&lt;br /&gt;
import org.apache.http.HttpException;&lt;br /&gt;
import org.apache.http.HttpHeaders;&lt;br /&gt;
import org.apache.http.HttpRequest;&lt;br /&gt;
import org.apache.http.HttpRequestInterceptor;&lt;br /&gt;
import org.apache.http.protocol.HttpContext;&lt;br /&gt;
import org.opensaml.common.xml.SAMLConstants;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class EcpRequestInterceptor implements HttpRequestInterceptor,EcpFlowConstants {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void process(HttpRequest request, HttpContext context)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throws HttpException, IOException &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addHeader(HttpHeaders.ACCEPT, PAOS_CONTENT_TYPE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addHeader(PAOS_HEADER,&quot;ver=&quot;+SAMLConstants.PAOS_NS+&quot;;&quot;+SAMLConstants.SAML20ECP_NS);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Testing the Code:&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Create the Source and Resource Directories&lt;/h3&gt;
&lt;br /&gt;
mkdir ecp-client/src/main/java -p&lt;br /&gt;
mkdir ecp-client/src/main/resources -p&lt;br /&gt;
&lt;br /&gt;
Copy the Java Source files into&amp;nbsp; ecp-client/src/main/java directory.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Creating Build File&lt;/h3&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a build.gradle File and add the following content in the File and also copy the file to ecp-client directory:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apply plugin: &#39;java&#39;&lt;br /&gt;apply plugin: &#39;eclipse&#39;&lt;br /&gt;apply plugin: &#39;application&#39;&lt;br /&gt;&lt;br /&gt;repositories{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mavenCentral()&lt;br /&gt;}&lt;br /&gt;dependencies{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; compile &#39;org.opensaml:opensaml:2.6.4&#39;,&#39;org.apache.httpcomponents:httpclient:4.4&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;org.slf4j:log4j-over-slf4j:1.7.10&#39;,&#39;org.slf4j:slf4j-simple:1.7.10&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;org.slf4j:slf4j-api:1.7.10&#39;&lt;br /&gt;}&lt;br /&gt;
mainClassName=&#39;edu.example.ecp.client.EcpClient&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Setting JAVA_HOME, GRADLE_HOME and PATH:&lt;/h3&gt;
&lt;br /&gt;
export JAVA_HOME=JavaHOME&lt;br /&gt;
export GRADLE_HOME=gradle_home&lt;br /&gt;
export PATH=$GRADLE_HOME/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Setting the Classpath &lt;/h3&gt;
Run the following command to creating the eclipse project and also setting the classpath&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;gradle cleanEclipse eclipse&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Running the Code&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
execute the &lt;b&gt;gradle run &lt;/b&gt;and it will execute the ecp client code and display the output in the command line.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Common Errors:&lt;/h3&gt;
&lt;b&gt;Problem 1&lt;/b&gt;. Service Provider not sending the SOAP response with ECP Header while accessing the secure access page using the http client.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;Cause:&lt;/b&gt;&amp;nbsp; The following headers are not available in the request:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
1. Accept: application/vnd.paos+xml&lt;br /&gt;
2. PAOS: ver=&#39;url:liberty:paos:2003-08&#39;;&#39;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution: &lt;/b&gt;Add the above headers in the request and SP will send the SOAP request with ECP Request Headers and also Authentication Request in the Soap Body.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Problem 2&lt;/b&gt;. The Identity Provider throwing 500 error while sending the authentication request from ECP to IDP&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;Cause:&lt;/b&gt;&amp;nbsp; The following headers are not available in the request:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
1. Accept: application/vnd.paos+xml&lt;br /&gt;
2. PAOS: ver=&#39;url:liberty:paos:2003-08&#39;;&#39;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution: &lt;/b&gt;Add
 the above headers in the request and DP will authenticate the user and send the SAML response in the soap body and also ecp response headers.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Problem 3&lt;/b&gt;. The Service Provider throwing 500 error while sending the authentication response from ECP to SP&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;Cause:&lt;/b&gt;&amp;nbsp; The following headers are not available in the request:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
1. Accept: application/vnd.paos+xml&lt;br /&gt;
2. PAOS: ver=&#39;url:liberty:paos:2003-08&#39;;&#39;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp&#39;&lt;br /&gt;
3. Content-Type:&amp;nbsp; application/vnd.paos+xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution: &lt;/b&gt;Add

 the above headers in the request and SP will accept the SAML response from the IDP issued assertion and It will redirect to requested target page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf&quot;&gt;SAML 2.0 Profiles&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/1410628237326137311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/02/how-to-develop-saml-ecp-custom-client.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/1410628237326137311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/1410628237326137311'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/02/how-to-develop-saml-ecp-custom-client.html' title='How to develop SAML-ECP Custom Client'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-2342215794394415100</id><published>2015-02-20T16:09:00.000-08:00</published><updated>2015-02-20T16:09:51.475-08:00</updated><title type='text'>How to configure Shibboleth 3.0 ECP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
The Shibboleth 3.0 Enhanced Client Proxy (ECP) to establish the Single-Sign on between Identity Provider (IDP) to Service Provider (SP) non supported browser applications such as Desk Top and Java Client Application.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Installed Software:&lt;/h3&gt;
1. JDK 1.8&lt;br /&gt;
2. Shibboleth IDP 3.0&lt;br /&gt;
3. Shibboleth Native Service Provider 2.5.3&lt;br /&gt;
4. Tomcat 8&lt;br /&gt;
5. Apache Http Server 2.2&lt;br /&gt;
6. Red Hat 6 &lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Pre-Requisite:&lt;/h3&gt;
1. Installed and Configured the Shibboleth Identity Provider 3.0&lt;br /&gt;
2. Installed and Configured the Linux Native Service Provider 2.5.3&lt;br /&gt;
&lt;br /&gt;
The following components are involved to configure the shibboleth ECP between IDP to SP:&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Identity Provider&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Login to the IDP server and configure the following components to enable the Enhanced Client Proxy (ECP): &lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1.1 Defining ECP End Point&lt;/h4&gt;
Go to the ID_HOME/metadata directory and add the following content in idp.metadata.xml file after &amp;lt;SingleSignOnService closing tag to enable the IDP ECP endpoint:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;SingleSignOnService Binding=&quot;urn:oasis:names:tc:SAML:2.0:bindings:SOAP&quot; Location=&quot;https://shib-idp-sandbox.ops.sfsu.edu/idp/profile/SAML2/SOAP/ECP&quot;/&amp;gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1.2 Protect the ECP Endpoint Container Authentication&lt;/h4&gt;
&amp;nbsp;&amp;nbsp; Enable the Basic Authentication at the Web Server level as follows:&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1.2.1 Go to the /etc/httpd/conf.d directory and create a file idp.conf&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1.2.2 Add the following content in the idp.conf file.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;lt;Location /idp/profile/SAML2/SOAP/ECP&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthName &quot;Demo Organization- ECP profile&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthzLDAPAuthoritative Off&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthBasicProvider ldap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthLDAPURL ldap://&amp;lt;LdapHostName&amp;gt;/&amp;lt;Ldap Ou&amp;gt;?&amp;lt;Authentication Parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthLDAPBindDN &quot;&amp;lt;Ldap Admin Bind Dn&amp;gt;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthLDAPBindPassword &quot;&amp;lt;Ldap Bind Password&amp;gt;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLRequireSSL&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Replace LdapHostName with your Host Name, Ldap Admin Bind Dn with your admin dn, Ldap Bind Password with you password, Authentication Parameter with your own parameter. My parameter is CN. After replacing the configuration looks as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Location /idp/profile/SAML2/SOAP/ECP&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthName &quot;Demo - ECP profile&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthzLDAPAuthoritative Off&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthBasicProvider ldap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthLDAPURL ldap://dcs01.example.edu/ou=people,dc=example,dc=edu?cn&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthLDAPBindDN &quot;CN=shibadmin,OU=Users,DC=example,dc=edu&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthLDAPBindPassword &quot;password&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLRequireSSL&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1.3 Restarting the Tomcat Server&lt;/h4&gt;
Go to the tomcat_home/bin directory and execute the following commands to stop and start the tomcat server.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;./shutdown.sh&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;./startup.sh &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1.4 Restart the Apache Web Server&lt;/h4&gt;
&amp;nbsp;Login as a root and execute the following command to restart the apache web server .&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;/etc/init.d/httpd restart&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Service Provider&lt;/h3&gt;
Login as a root in service provider machine and perform the following tasks to enable the ECP. &lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
2.1 Enabling the ECP&amp;nbsp;&lt;/h4&gt;
&amp;nbsp;I have installed the shibboleth sp in /apps/shibboleth-sp directory. Go to the Shibboleth-sp/etc/shibboleth directory and edit the shibboleth2.xml file and add the ECP=&quot;true&quot; parameter under &amp;lt;SSO section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;SSO entityID=&quot;&amp;lt;IDp Entity&amp;gt;&quot; ECP=&quot;true&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; discoveryProtocol=&quot;SAMLDS&quot; discoveryURL=&quot;https://shib-idp.example.ed/DS/WAYF&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAML2 SAML1&lt;br /&gt;&amp;nbsp;&amp;lt;/SSO&amp;gt;&lt;br /&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
2.2 Protecting the Resource&lt;/h4&gt;
&amp;nbsp;After installing the shibboleth service provide and apache22.config file generated in the /apps/shibboleth-sp/etc/shibboleth directory. I have renamed&amp;nbsp; apache22.config file to shib.conf and copy to  /etc/httpd/conf.d directory. By default /secure application is protected in the shib.conf file. I am using the default configuration as it is and configuration is given below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Location /secure&amp;gt;&lt;br /&gt;&amp;nbsp; AuthType shibboleth&lt;br /&gt;&amp;nbsp; ShibCompatWith24 On&lt;br /&gt;&amp;nbsp; ShibRequestSetting requireSession 1&lt;br /&gt;&amp;nbsp; require shib-session&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
2.3 Restart the Apache Web Server&amp;nbsp;&lt;/h4&gt;
&amp;nbsp;&lt;b&gt; /etc/init.d/httpd restart&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Testing the ECP through Java&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://github.com/reckart/shib-http-client&quot;&gt;1. Download the ECP Client Libraries&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;b&gt;Sample Code&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; The following sample code needs to be executed to test the ecp configuration and also modify the idPUrl to your actual Url, spUrl to your actual Sp Url, User Name with your user name and password with your password:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
import java.io.BufferedReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.io.InputStreamReader;&lt;br /&gt;&lt;br /&gt;import org.apache.http.HttpResponse;&lt;br /&gt;import org.apache.http.client.HttpClient;&lt;br /&gt;import org.apache.http.client.methods.HttpGet;&lt;br /&gt;import org.opensaml.DefaultBootstrap;&lt;br /&gt;import org.opensaml.xml.ConfigurationException;&lt;br /&gt;&lt;br /&gt;import de.tudarmstadt.ukp.shibhttpclient.ShibHttpClient;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class ShibEcpTestClient {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String idpBaseUrl=&quot;https://shib-idp.example.edu&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String spUrl=&quot;https://shib-sp.example.edu&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String userName=&quot;&amp;lt;User Name&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String password=&quot;&amp;lt;Password&amp;gt;&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.Log&quot;,&quot;org.apache.commons.logging.impl.SimpleLog&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.simplelog.showdatetime&quot;,&quot;true&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.simplelog.log.org.apache.http&quot;,&quot;DEBUG&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.setProperty(&quot;org.apache.commons.logging.simplelog.log.org.apache.http.wire&quot;,&quot;DEBUG&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultBootstrap.bootstrap();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ConfigurationException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpClient client= new ShibHttpClient(idpBaseUrl+&quot;/idp/profile/SAML2/SOAP/ECP&quot;, userName, password);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpGet req = new HttpGet(spUrl+&quot;/secure&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpResponse res = client.execute(req);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream ins= res.getEntity().getContent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader br= new BufferedReader(new InputStreamReader(ins));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String readLine=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while((readLine=br.readLine()) != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Read Line Data&amp;nbsp; :&quot;+readLine);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/h3&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/2342215794394415100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/02/how-to-configure-shibboleth-30-ecp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/2342215794394415100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/2342215794394415100'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/02/how-to-configure-shibboleth-30-ecp.html' title='How to configure Shibboleth 3.0 ECP'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-8476109049683759653</id><published>2015-02-13T16:10:00.000-08:00</published><updated>2015-02-13T16:10:41.587-08:00</updated><title type='text'>Office 365 Integrating with Shibboleth 3.0</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Enabling the Browser based Single Sign-On or Service Provider (SP) initiated Single Sign-On&amp;nbsp; between&amp;nbsp; Office 365 to Shibboleth Identity Provider (IDP 3.0) as follows:&lt;br /&gt;
&lt;br /&gt;
Pre-Requisite:&lt;br /&gt;
&lt;br /&gt;
1. Installed and Configured the IDP Server 3.0 &lt;br /&gt;
2. Office 365 Domain Should be created and verified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Shibboleth IDP 3.0 Configuration:&lt;/h2&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. Setting the Trust IDP to SP&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; 1.1 Import the Office 365 metadata&lt;/h4&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to the ID_HOME/metadata directory and execute the following command to download the office 365 metadata:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; wget https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.2 Register the metadata with IDP&lt;/h4&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to the ID_HOME/conf directory and add the following content in metadata-providers.xml file:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;lt;MetadataProvider id=&quot;microsoftonline&quot;&amp;nbsp; xsi:type=&quot;FilesystemMetadataProvider&quot; metadataFile=&quot;%{idp.home}/metadata/federationmetadata.xml&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/h4&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. Setting up the Encryption optional for SP&#39;s&lt;/h3&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to the IDP_HOME/conf directory and modify the idp.properties file.&amp;nbsp; &lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 2.3 Modifying the idp.properties&lt;/h4&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 This configuration is required to setup optional encryption parameter for SP&#39;s metadata encryption keys. If the metadata contains encryption keys and it will 
apply while encrypting the data else it is optional.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;idp.encryption.optional = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Releasing the Attributes from IDP to SP&lt;/h3&gt;
&amp;nbsp;&amp;nbsp; As per the Microsoft the following attributes are required for office 365 SSO:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1. ImmutableID&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2. UserId &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Go to the IDP_HOME/conf directory and modify the attribute-resolver.xml and attribute-filter.xml file to release the attributes from IDP to SP.&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 3.1 Defining Attributes in attribute-resolver.xml File&amp;nbsp; &lt;/h4&gt;
&amp;nbsp;&amp;nbsp; The following content needs to be added in the attribute-resolver.xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;ImmutableID Attribute Definition&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
The immutableID is unqiue and shouldn&#39;t change any time. In my case common name (cn) is unique. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:AttributeDefinition id=&quot;ImmutableID&quot;&amp;nbsp; xsi:type=&quot;ad:Simple&quot; sourceAttributeID=&quot;cn&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:Dependency ref=&quot;myLDAP&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:AttributeEncoder xsi:type=&quot;enc:SAML2StringNameID&quot; nameFormat=&quot;urn:oasis:names:tc:SAML:2.0:nameid-format:persistent&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/resolver:AttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; The &lt;b&gt;SAML2StringNameID &lt;/b&gt;is deprecated in shibboleth 3.0. If you want to compatible with Shibboleth IDP 3.0, you need to follow the step 5 to generate the Name ID Policy and also modify the attribute definition configuration as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:AttributeDefinition id=&quot;ImmutableID&quot;&amp;nbsp; xsi:type=&quot;ad:Simple&quot; sourceAttributeID=&quot;cn&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:Dependency ref=&quot;myLDAP&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;urn:mace:dir:attribute-def:ImmutableID&quot; friendlyName=&quot;ImmutableID&quot;&amp;nbsp; encodeType=&quot;false&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/resolver:AttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&lt;b&gt;UserId Attribute Definition&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;resolver:AttributeDefinition id=&quot;UserId&quot; xsi:type=&quot;ad:Simple&quot; sourceAttributeID=&quot;mail&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:Dependency ref=&quot;myLDAP&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resolver:AttributeEncoder xsi:type=&quot;enc:SAML2String&quot; name=&quot;IDPEmail&quot; friendlyName=&quot;UserId&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/resolver:AttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;3.2 Releasing Attributes from IDP to SP in attribute-filter.xml File:&lt;/h4&gt;
&lt;br /&gt;
&amp;nbsp;The following content needs to be added in the attribute-filter.xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;afp:AttributeFilterPolicy id=&quot;PolicyForWindowsAzureAD&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:PolicyRequirementRule xsi:type=&quot;basic:AttributeRequesterString&quot; value=&quot;urn:federation:MicrosoftOnline&quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Release mail as Windows Azure AD User ID --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:AttributeRule attributeID=&quot;UserId&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:PermitValueRule xsi:type=&quot;basic:ANY&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/afp:AttributeRule&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Release Immutable ID to Windows Azure AD --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:AttributeRule attributeID=&quot;ImmutableID&quot; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:PermitValueRule xsi:type=&quot;basic:ANY&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/afp:AttributeRule&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Denying the transient ID release to Windows Azure AD --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:AttributeRule attributeID=&quot;transientId&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;afp:DenyValueRule xsi:type=&quot;basic:ANY&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/afp:AttributeRule&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/afp:AttributeFilterPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. Generating the Name ID Configuration&lt;/h3&gt;
&amp;nbsp;&amp;nbsp; Go to the IDP_HOME/conf directory and modify the saml-nameid.properties and saml-nameid.xml file to generate the Persistence Name Id and this Id going to release to Service Providers as Name ID Policy and This Id going to be used to retrieve the attributes using AttributeService.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 4.1 Configuring the SAML Name ID&lt;/h4&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; The Name ID generation needs to be configured to release persistent ID as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Persistent ID Generator configuration in saml-nameid.properties&lt;/b&gt;&lt;/h4&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; The following properties needs to uncommented to configure the Persistence Name Id &amp;nbsp; Generator:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; idp.persistentId.generator = shibboleth.ComputedPersistentIdGenerator&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; idp.persistentId.sourceAttribute = cn&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; idp.persistentId.salt = changethistosomethingrandom &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; In the above configuration I have chosen &lt;b&gt;cn&lt;/b&gt; is my source attribute. If you want to modify the source attribute according to your environment. IDP going to release the name id policy as a cn persistence attribute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Persistent ID Generator configuration in saml-nameid.xml&lt;/b&gt;&lt;/h4&gt;
The following content needs to be added in the saml-nameid.xml file and also you need to modify the&amp;nbsp; attribute source ids. In my case my persistence source id is &lt;b&gt;ImmutableID.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref bean=&quot;shibboleth.SAML2PersistentGenerator&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;bean parent=&quot;shibboleth.SAML2AttributeSourcedGenerator&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p:format=&quot;urn:oasis:names:tc:SAML:2.0:nameid-format:persistent&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p:attributeSourceIds=&quot;#{ {&#39;ImmutableID&#39;} }&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Generating Name ID Consumption Configuration&lt;/h3&gt;
Go to the IDP_HOME/conf/c14n directory and modify the attribute-sourced-subject-c14n-config.xml and subject-c14n.xml to compatible with Attribute Encoders as per Shibboleth 3.0 Specification.&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;5.1 Configuring the Name ID Attribute in attribute-sourced-subject-c14n-config.xml&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&amp;nbsp;This configuration is required to add the name identifier in the attribute-sourced-subject-c14n-config.xml because IDP going to release NameIDPolicy in the SAML Assertion.&amp;nbsp; I am using the common name (cn) as the subject name identifier and I have configured the cn as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;util:list id=&quot;shibboleth.c14n.attribute.AttributesToResolve&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;cn&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/util:list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;util:list id=&quot;shibboleth.c14n.attribute.AttributeSourceIds&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;cn&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/util:list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to add more than one field as a subject name identifier as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;util:list id=&quot;shibboleth.c14n.attribute.AttributesToResolve&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;cn&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;mail&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/util:list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;util:list id=&quot;shibboleth.c14n.attribute.AttributeSourceIds&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;cn&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;mail&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/util:list&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: These attributes are configured in the attribute-resolver.xml file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
5.2 Configuring the subject-c14n.xml File&lt;/h4&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; Configuring the SAML2 Persistence Name ID&lt;/h4&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  Un-Comment the following lines to configure the SAML Name Id:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;bean id=&quot;c14n/attribute&quot; parent=&quot;shibboleth.PostLoginSubjectCanonicalizationFlow&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ref bean=&quot;c14n/SAML2Persistent&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Configuring the SAML2 Name ID Format&lt;/h4&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add the &amp;lt;value&amp;gt;urn:oasis:names:tc:SAML:2.0:nameid-format:persistent&amp;lt;/value&amp;gt; in the &amp;lt;util:list id=&quot;shibboleth.NameTransformFormats&quot;&amp;gt; bean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
6. Restart the Tomcat Web Server &lt;/h3&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Office 365 Configuration:&lt;/h2&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1. Setting the Trust From SP to IDP&lt;/h4&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; Open the Windows Azure Active Directory Power Shell Window.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Execute the following command to authenticate the user and also establish the connectivity from client machine to windows azure AD Server.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Connect-MsolService&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; After executing the above command, you need to provide the user name and password to authenticate the user against the windows azure ad.&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Configuring the SSO&lt;/b&gt;&lt;/h4&gt;
&amp;nbsp;The following scripts needs to be executed to configure the Single Sign-On. I have used the idp-signing.crt certificate in the script because this certificate is self signed and this certificate is available in the IDP_HOME/credentials directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;$dom = &quot;&amp;lt;Replace Your Federated Domain&amp;gt;&quot;&lt;br /&gt;&amp;nbsp;$idpHost=&quot;&amp;lt;Replace Your IDP Host&amp;gt;&quot;&lt;br /&gt;
&lt;br /&gt;
$fedBrandName=&quot;IDMGT Shibboleth&quot;&lt;br /&gt;&lt;br /&gt;
$url = &quot;$idpHost/idp/profile/SAML2/POST/SSO&quot;&lt;br /&gt;$ecpUrl = &quot;$idpHost/idp/profile/SAML2/SOAP/ECP&quot;&lt;br /&gt;$uri = &quot;$idpHost/idp/shibboleth&quot;&lt;br /&gt;$logoutUrl = &quot;$idpHost/profile/SAML2/POST/SLO&quot; &lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(&quot;idp-signing.crt&quot;)&lt;br /&gt;&lt;br /&gt;
$certData = [system.convert]::tobase64string($cert.rawdata)&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
Set-MsolDomainAuthentication –DomainName $dom –federationBrandName $FedBrandName -Authentication Federated&amp;nbsp; -PassiveLogOnUri $url -SigningCertificate $certData -IssuerUri $uri -ActiveLogOnUri $ecpUrl -LogOffUri $logoutUrl -PreferredAuthenticationProtocol SAMLP&lt;br /&gt;&lt;br /&gt;
Get-MsolDomainFederationSettings -DomainName $dom &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing the SSO Will Come soon &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/8476109049683759653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/02/office-365-integrating-with-shibboleth.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/8476109049683759653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/8476109049683759653'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/02/office-365-integrating-with-shibboleth.html' title='Office 365 Integrating with Shibboleth 3.0'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-3662693832601117632</id><published>2015-02-09T12:18:00.000-08:00</published><updated>2015-02-09T12:18:30.798-08:00</updated><title type='text'>Installing Shibboleth Native Service Provider</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Installing the Shibboleth Native Service Provider 2.5.3 in Red Hat 6.6.0.2.el6.x86_64&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Pre-Requisite Software:&lt;/h3&gt;
&lt;br /&gt;
&amp;nbsp;Install the following software using the yum repository to build the native shibboleth sp:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;yum install gcc gcc-c++ openssl-devel boost-devel libcurl-devel httpd-devel unixODBC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Software Required:&lt;/b&gt;&lt;/h3&gt;
The following software needs to be installed in the sequence order to build the Native Shibboleth Service Provider. You can install shibboleth default location /opt/shiiboleth-sp installation or you can choose custom path. I have chosen my path is &lt;b&gt;/apps/shibboleth-sp&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1. log4shib:&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;1.1 Download:&lt;/b&gt;&lt;/h4&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;
http://shibboleth.net/downloads/log4shib/latest/log4shib-1.0.8.tar.gz&lt;br /&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1.2 Extract:&lt;/h4&gt;
&lt;br /&gt;
tar xzvf log4shib-1.0.8.tar.gz&lt;br /&gt;&lt;br /&gt;
cd log4shib-1.0.8&lt;br /&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1.3 Configure , Build, and Install&lt;/h4&gt;
&lt;br /&gt;
./configure --disable-static --disable-doxygen --prefix=/apps/shibboleth-sp&lt;br /&gt;&lt;br /&gt;
make&lt;br /&gt;&lt;br /&gt;
make install&lt;br /&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2. xerces-c 3.1.1:&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;2.1 Download:&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
wget http://www.gtlib.gatech.edu/pub/apache//xerces/c/3/sources/xerces-c-3.1.1.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
2.2 Extract:&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;tar xzvf xerces-c-3.1.1.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
cd xerces-c-3.1.1&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
2.3 Configure , Build, and Install&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
./configure --prefix=/apps/shibboleth-sp --disable-netaccessor-libcurl&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make install&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. xml-security-c-1.7.2:&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;3.1 Download:&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
http://mirrors.ibiblio.org/apache/santuario/c-library/xml-security-c-1.7.2.tar.gz&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
3.2 Extract:&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;tar xzvf xml-security-c-1.7.2.tar.gz&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
cd xml-security-c-1.7.2&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
After extracting the xml-security-c-1.7.2.tar.gz file and set CPPFLAGS and LDFLAGS to configure and build the xml-security-c&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
3.3 Configure , Build, and Install&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
export CPPFLAGS=&#39;-I/apps/shibboleth-sp/include&#39;&lt;br /&gt;export LDFLAGS=&#39;-L/apps/shibboleth-sp/lib&#39;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
./configure --without-xalan --disable-static --prefix=/apps/shibboleth-sp&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make install&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
4. XML Tooling:&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;4.1 Download:&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
wget http://shibboleth.net/downloads/c++-opensaml/latest/xmltooling-1.5.3.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
4.2 Extract:&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
tar xzvf xmltooling-1.5.3.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
cd xmltooling-1.5.3&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
4.3 Configure , Build, and Install&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
./configure --with-log4shib=/apps/shibboleth-sp --prefix=/apps/shibboleth-sp -C&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make install&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Open SAML:&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;5.1 Download:&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
wget http://shibboleth.net/downloads/c++-opensaml/latest/opensaml-2.5.3.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
5.2 Extract:&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
tar xzvf opensaml-2.5.3.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
cd opensaml-2.5.3&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
5.3 Configure , Build, and Install&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
./configure --with-log4shib=/apps/shibboleth-sp --prefix=/apps/shibboleth-sp -C&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make install&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
6. httpd mod_ssl&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Install the apache 2.2 http server and&amp;nbsp; mod ssl for configuring the Shibboleth SP as follows:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
yum install httpd mod_ssl &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
7. Shibboleth-Sp:&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;7.1 Download:&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
http://shibboleth.net/downloads/service-provider/latest/shibboleth-sp-2.5.3.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
7.2 Extract:&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
tar xzvf shibboleth-sp-2.5.3.tar.gz&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
cd shibboleth-sp-2.5.3&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
7.3 Configure , Build, and Install&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Before building the shibboleth enable the apache version option. In my build i have installed the apache web server 2.2. In your case if you want to enable the different apache version you can enable acording to version. The apache options are enable-apache-22 and apx file option is with-apxs22&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
./configure --with-log4shib=/apps/shibboleth-sp --enable-apache-22&amp;nbsp; --with-apxs22=/usr/sbin/apxs --prefix=/apps/shibboleth-sp&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
make install&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Configuring the Http Server&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
We need to configure the http server with shibboleth sp. For that reason copy the /apps/shibboleth-sp/etc/shibboleth/apache22.config to /etc/httpd/conf.d/apache22.conf. By default apache 2.2 load the conf automatically based on the .conf extension.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
I have used the default SSL configuration certs to enable the ssl.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Restart the Apache Httpd Server:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
/etc/init.d/httpd restart&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt; &lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
After restarting the http server and it will load the shibboleth2. conf file.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Starting the Shibboleth SP&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Go to /apps/shiiboleth-sp/sbin and execute the following command and it will start the shibboleth sp:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
./shibd&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Stopping the Shibboleth SP&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ps -ef | grep shibd&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt; &lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
kill -9 &amp;lt;shibd process id&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
rm -f /apps/shibboleth-sp/var/run/shibboleth/shibd.sock&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Shibboleth Start and Stop Start up Script:&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
After starting and stopping the shibboleth sp successfully, we need to build the init script as follows:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;Go to the /etc/init.d/ and create the shibd file and add the following content:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ATH=/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;DESC=&quot;Shibboleth 2 daemon&quot;&lt;br /&gt;NAME=shibd&lt;br /&gt;SHIB_HOME=/apps/shibboleth-sp&lt;br /&gt;SHIBSP_CONFIG=$SHIB_HOME/etc/shibboleth/shibboleth2.xml&lt;br /&gt;LD_LIBRARY_PATH=$SHIB_HOME/lib&lt;br /&gt;DAEMON=$SHIB_HOME/sbin/$NAME&lt;br /&gt;SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;PIDFILE=$SHIB_HOME/var/run/$NAME.pid&lt;br /&gt;LOCKFILE=$SHIB_HOME/var/run/shibboleth/shibd.sock&lt;br /&gt;DAEMON_OPTS=&quot;&quot;&lt;br /&gt;RETVAL=0&lt;br /&gt;&lt;br /&gt;# Force removal of socket&lt;br /&gt;DAEMON_OPTS=&quot;$DAEMON_OPTS -f&quot;&lt;br /&gt;&lt;br /&gt;# Use defined configuration file&lt;br /&gt;DAEMON_OPTS=&quot;$DAEMON_OPTS -c $SHIBSP_CONFIG&quot;&lt;br /&gt;&lt;br /&gt;# Specify pid file to use&lt;br /&gt;DAEMON_OPTS=&quot;$DAEMON_OPTS -p $PIDFILE&quot;&lt;br /&gt;&lt;br /&gt;# Specify wait time to use&lt;br /&gt;DAEMON_OPTS=&quot;$DAEMON_OPTS -w 30&quot;&lt;br /&gt;&lt;br /&gt;# Source Functions&lt;br /&gt;. /etc/rc.d/init.d/functions&lt;br /&gt;&lt;br /&gt;if [ -f /etc/sysconfig/shibd ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . /etc/sysconfig/shibd&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Exit if the package is not installed.&lt;br /&gt;[ -x &quot;$DAEMON&quot; ] || exit 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;case &quot;$1&quot; in&lt;br /&gt;start)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Don&#39;t start shibd if NO_START is set.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ &quot;$NO_START&quot; = 1 ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Not starting $DESC (see /etc/default/$NAME)&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Starting $DESC: &quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;$NAME.&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; daemon --pidfile=${PIDFILE} $DAEMON $DAEMON_OPTS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;&lt;br /&gt;stop)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Stopping $DESC: &quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;PID File $PIDFILE&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; killproc -p ${PIDFILE} -t 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETVAL=$?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ $RETVAL = 0 ] &amp;amp;&amp;amp; rm -f ${PIDFILE} ${LOCKFILE}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;$NAME.&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;&lt;br /&gt;restart|force-reload)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Stopping $DESC: &quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; killproc -p ${PIDFILE} -t 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETVAL=$?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ $RETVAL = 0 ] &amp;amp;&amp;amp; rm -f ${PIDFILE} ${LOCKFILE}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Starting $DESC: &quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; daemon --pidfile=${PIDFILE} $DAEMON $DAEMON_OPTS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;$NAME.&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;*)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&quot; &amp;gt;&amp;amp;2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;exit 0&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
In the above script modify the SHIB_HOME according to your environment.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
References:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
1. https://dev.e-taxonomy.eu/trac/wiki/ShibbolethSP2InstallDebianLenny&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
2. https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxSourceBuild&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/3662693832601117632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/02/installing-shibboleth-native-service.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/3662693832601117632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/3662693832601117632'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/02/installing-shibboleth-native-service.html' title='Installing Shibboleth Native Service Provider'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-4150238695577342873</id><published>2015-02-04T10:58:00.001-08:00</published><updated>2015-02-04T10:58:30.692-08:00</updated><title type='text'>Installing Shibboleth IDP 3.0 Linux Envronment</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Installing Shibboleth IDP 3.0 Linux Envronment&lt;br /&gt;
&lt;br /&gt;
The following software required to install the shibboleth IDP 3.0 in RedHat Linux:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://java.com/en/download/&quot;&gt;1. Sun Java 1.8&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://apache.mirrors.lucidnetworks.net/tomcat/tomcat-8/v8.0.18/bin/apache-tomcat-8.0.18.tar.gz&quot;&gt;2. Apache Tomcat 8&lt;/a&gt;&lt;br /&gt;
3. Apache Http Server 2.2&lt;br /&gt;
&lt;a href=&quot;http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-3.0.0.tar.gz&quot;&gt;4. Shibboleth IDP 3.0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am going to install the Apache Http Server as a root user and others all install in non-root user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Sun Java 1.8&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Down load the Java Files and Extract the Java. I have extracted the java in /apps/jdk1.8.0_31 directory. After extracting the set the JAVA_HOME environment variable and JAVA PATH in the bash or command line.&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/apps/jdk1.8.0_31&lt;br /&gt;
export PATH=$JAVA_HOME/bin;$PATH &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Apache Tomcat 8&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Down load the Apache Tomcat 8 and Extract the Tomcat. I have extracted the tomcat in /apps/apache-tomcat-8.0.18 directory.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;b&gt;2.1 Create the Self Signed certificate to Enable the SSL&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; Go to the /apps/apache-tomcat-8.0.18/conf directory and execute the following command to create the self signed certificate to enable the SSL. The self Signed Certificate is not recommended for production.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;b&gt;keytool -genkey -keystore tomcat.jks -alias tomcat -keyalg RSA&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; You need to provide the following details while executing the above command.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 1. Key Store Password&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 2. First and Last Name. First and Last Name is Host Name.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2.2 Configuring the server.xml to enable the SSL &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Add the following connector configuration below &lt;b&gt;Service&lt;/b&gt; section&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;Connector&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protocol=&quot;org.apache.coyote.http11.Http11NioProtocol&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; port=&quot;8443&quot; maxThreads=&quot;200&quot; scheme=&quot;https&quot; secure=&quot;true&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLEnabled=&quot;true&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; keystoreFile=&quot;/apps/apache-tomcat-8.0.18/conf/tomcat.jks&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; keystorePass=&quot;&amp;lt;Replace With Your Keystore Password&amp;gt;&quot; clientAuth=&quot;false&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sslProtocol=&quot;TLS&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;b&gt;2.3 Start the Tomcat&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; Go to the /apps/apache-tomcat-8.0.18/bin directory and run the &lt;b&gt;./startup.sh&lt;/b&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; After executing the above command it will start the tomcat server.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
3. Apache Http Server&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;3.1 Installing the Apache Tomcat Server&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; Login as a root and install the apache http server and mod_ssl&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; yum install httpd mod_ssl&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; It will install the httpd and mod_ssl. I am using the default ssl configuration and certs provided by default installation. If you want to modify the SSL configuration to import the cert and you need to modify the /etc/httpd/conf.d/ssl.conf file and replace the following properties to with certs generated.&lt;br /&gt;
&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;3.2 Starting the Http Server&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Execute the /etc/inid.d/httpd restart and It will restart the server.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;3.3 Configuring the proxy_ajp.conf file&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Create the proxy_ajp.conf file and add the following content to invoke the apache tomcat web applications using ajp protocol. My tomcat is running under same machine.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;ProxyPass /idp/ ajp://localhost:8009/idp/ connectiontimeout=30 timeout=60&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;I have used&amp;nbsp; connectiontimeout&amp;nbsp; and timeout parameter because some times tomcat server delay the response and http server will throw 404 error.&lt;br /&gt;
&lt;br /&gt;
I have used /idp because idp application will reside in the tomcat server. I am going to deploy the idp application in tomcat server after installing the IDP Server.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;3.4 Re-starting the Http Server&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; Follow the step 3.2 to restart the tomcat server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Shibboleth IDP 3.0&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Extract the shibboleth file and I have extracted the /apps/soft/shibboleth-identity-provider-3.0.0 directory. Go to the /apps/soft/shibboleth-identity-provider-3.0.0/bin directory and execute the ./install.sh file and It will install the shibboleth 3.o as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Executing the Installable File&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
./install.sh&lt;br /&gt;&lt;br /&gt;
Source (Distribution) Directory: [/apps/soft/shibboleth-identity-provider-3.0.0]&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Choosing the Installation Directory&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Enter and It will show the following option:&lt;br /&gt;
&lt;br /&gt;Installation Directory: [/opt/shibboleth-idp]&lt;br /&gt;
&lt;br /&gt;
I have chosen different path because I am going to install shibboleth idp as a non-root user.&amp;nbsp; My Shibboleth idp location is&lt;br /&gt;
&lt;br /&gt;
/apps/shibboleth-idp&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Choosing Host Name &lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
Hostname: [shib-idp-sandbox.example.edu]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have selected the default host name and press enter button and it will display the following screen. &lt;br /&gt;
&lt;br /&gt;
SAML EntityID: [https://shib-idp-sandbox.example.edu/idp/shibboleth]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Choosing Attribute Scope &lt;/b&gt;: &lt;br /&gt;
&lt;br /&gt;
Attribute Scope: [example.edu]&lt;br /&gt;
I have selected the default attribute scope and press enter button and it will display the following screen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Entering the TLS and Cookie Encryption Key Password:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TLS Private Key Password:&lt;br /&gt;Re-enter password:&lt;br /&gt;Cookie Encryption Key Password:&lt;br /&gt;Re-enter password:&lt;br /&gt;&lt;br /&gt;
Warning: /apps/shibboleth-idp/bin does not exist.&lt;br /&gt;Warning: /apps/shibboleth-idp/dist does not exist.&lt;br /&gt;Warning: /apps/shibboleth-idp/doc does not exist.&lt;br /&gt;Warning: /apps/shibboleth-idp/system does not exist.&lt;br /&gt;Warning: /apps/shibboleth-idp/webapp does not exist.&lt;br /&gt;Generating Signing Key, CN = shib-idp-sandbox.example.edu URI = https://shib-idp-sandbox.example.edu/idp/shibboleth ...&lt;br /&gt;...done&lt;br /&gt;Creating Encryption Key, CN = shib-idp-sandbox.example.edu URI = https://shib-idp-sandbox.example.edu/idp/shibboleth ...&lt;br /&gt;...done&lt;br /&gt;Creating TLS keystore, CN = shib-idp-sandbox.example.edu URI = https://shib-idp-sandbox.example.edu/idp/shibboleth ...&lt;br /&gt;...done&lt;br /&gt;Creating cookie encryption key files...&lt;br /&gt;...done&lt;br /&gt;Rebuilding /apps/shibboleth-idp/war/idp.war ...&lt;br /&gt;...done&lt;br /&gt;
&lt;br /&gt;
Shibboleth was installed successfully.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Post Shibboleth Installation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.1 Setting the idp.home system variable in tomcat&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Edit the /apps/apache-tomcat-8.0.18/bin/catalina.sh file and add the idp.home java system property. This property is required for loading the configuration files in the tomcat server.&lt;br /&gt;
&lt;br /&gt;
JAVA_OPTS=&quot;$JAVA_OPTS -Didp.home=/apps/shibboleth-idp&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.2 Adding the jstl-1.2.jar in the tomcat lib directory&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Download the jstl-1.2.jar file and add the /apps/apache-tomcat-8.0.18/lib directory. This jar file is required for execute the velocity templates.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.3 Deploy the idp.war file in tomcat&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Create the idp.xml file in&amp;nbsp; /apps/apache-tomcat-8.0.18/conf/Catalina/localhost/ directory and add the following content to deploy the idp.war file in tomcat&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;lt;Context docBase=&quot;/apps/shibboleth-idp/war/idp.war&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; privileged=&quot;true&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; antiResourceLocking=&quot;false&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; antiJARLocking=&quot;false&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unpackWAR=&quot;true&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; swallowOutput=&quot;true&quot; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.4 Restart the tomcat&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Go to the /apps/apache-tomcat-8.0.18/bin directory and execute the following commands to restart the tomcat server:&lt;br /&gt;
&lt;br /&gt;
./shutdown.sh - it will stop the tomcat server&lt;br /&gt;
./startup.sh - it will start the tomcat server&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.5 Testing the Shibboleth Installation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Access the shibboleth status page (https://localhost/idp/status ) and it will display the following content in the browser:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;### Operating Environment Information
operating_system: Linux
operating_system_version: 2.6.32-504.8.1.el6.x86_64
operating_system_architecture: amd64
jdk_version: 1.8.0_31
available_cores: 4
used_memory: 714 MB
maximum_memory: 1751 MB

### Identity Provider Information
idp_version: 3.0.0
start_time: 2015-02-03T15:11:50-08:00
current_time: 2015-02-04T10:55:25-08:00
uptime: 71015020 ms

service: shibboleth.LoggingService
last successful reload attempt: 2015-02-03T23:11:06Z

service: shibboleth.ReloadableAccessControlService
last successful reload attempt: 2015-02-03T23:11:09Z

service: shibboleth.MetadataResolverService
last successful reload attempt: 2015-02-03T23:11:08Z

 metadata source: ShibbolethMetadata

service: shibboleth.RelyingPartyResolverService
last successful reload attempt: 2015-02-03T23:11:09Z

service: shibboleth.NameIdentifierGenerationService
last successful reload attempt: 2015-02-03T23:11:07Z

service: shibboleth.AttributeResolverService
last successful reload attempt: 2015-02-03T23:11:07Z

service: shibboleth.AttributeFilterService
last successful reload attempt: 2015-02-03T23:11:07Z&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/4150238695577342873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2015/02/installing-shibboleth-idp-30-linux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4150238695577342873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/4150238695577342873'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2015/02/installing-shibboleth-idp-30-linux.html' title='Installing Shibboleth IDP 3.0 Linux Envronment'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-2629781600080741436</id><published>2014-12-09T16:40:00.000-08:00</published><updated>2014-12-09T16:40:57.840-08:00</updated><title type='text'>How to Develop and Deploy WCF REST Servvice Web Deployment Manager / Jenkins</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
The following steps needs to be followed to deploy the WCF REST service in IIS using the Web Deployment Manager and Jenkin. They are &lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.microsoft.com/web/downloads/platform.aspx&quot;&gt;1. Download and Install Web Platform Installer&lt;/a&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
2.&amp;nbsp; Open the Microsoft Web Platform Installer and Install the following components to execute the MSBuild targets and also deploy the web application in IIS through Web Deployment Manager.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 2.1 Microsoft.Net Framework 4.5&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; This component is required for to install the SharpDevelop IDE and also Run time environment for the IIS.&amp;nbsp; &lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 2.2 Web Deployment Manager&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; This component is required for to deploy the REST FULL Web Services through Remote &lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;2.3 Visual Studio 2010 Shell (Isolated)&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
This component is required for to deploy the REST FULL Web Services using MSBuild targets. For example&amp;nbsp; /p:DeployOnBuild=True&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
3. Install the IIS&amp;nbsp; &lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
This step is only required if your not installed IIS in Windows 7. I have highlighted the required component in bold font. Open the Control Panel --&amp;gt; Programs and Features --&amp;gt;&amp;nbsp; Turn Windows Feature On or Off --&amp;gt; &lt;b&gt;Select Internet Information Services and Click OK Button&lt;/b&gt;. It will install the IIS.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 3.1 Enabling the AST..Net Handler&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; This component is required to enable the ASP.net Mapping Handler components in IIS. This component was not installed after installing the IIS.&amp;nbsp; Open the Control Panel --&amp;gt; Programs and Features --&amp;gt;&amp;nbsp; Turn Windows
 Feature On or Off --&amp;gt;&lt;b&gt; Select Internet Information Services --&amp;gt; Select World Wide Web Services --&amp;gt; Select ASP.NET check box and Click OK Button&lt;/b&gt;. It will install the ASP.NET feature.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 3.2 Enabling the WCF Handler&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; This component is required to enable the WCF Mapping Handler&amp;nbsp; components in IIS. This component was not installed after installing the IIS.&amp;nbsp; 
Open the Control Panel --&amp;gt; Programs and Features --&amp;gt;&amp;nbsp; Turn Windows
 Feature On or Off --&amp;gt; &lt;b&gt;Select Microsoft .NET Framework 3.5.1&amp;nbsp; --&amp;gt; 
Select Windows Communication Foundation HTTP Activation and&amp;nbsp; Windows Communication Foundation Non-HTTP Activation&amp;nbsp; and Click
 OK Button.&lt;/b&gt; It will install the WCF feature.&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.icsharpcode.net/opensource/sd/download/#SharpDevelop5x&quot;&gt;4. Download and install the Sharpdevelop IDE&lt;/a&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
5. Create the REST Service Project Using the Sharpdevelop IDE&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the SharpDeveop IDE --&amp;gt; File --&amp;gt; Solution --&amp;gt; C# --&amp;gt; WCF --&amp;gt;&amp;nbsp; Select WCF REST Service and Enter Name is RestDemoService and Click Create Button and It will create the WCF REST Service Project. My Sample Code is given below. I am deploying the default generated code rest full wcf servce using web deployment manager and jenkin job.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br /&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.ServiceModel;&lt;br /&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;using&lt;/span&gt;&amp;nbsp;System.ServiceModel.Web;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;RestDemoService&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ServiceContract]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;interface&lt;/span&gt;&amp;nbsp;IService&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[OperationContract]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style=&quot;color: midnightblue; font-weight: bold;&quot;&gt;WebGet&lt;/span&gt;(UriTemplate =&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&quot;operation/{name}&quot;&lt;/span&gt;)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;string&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: midnightblue; font-weight: bold;&quot;&gt;MyOperation&lt;/span&gt;(&lt;span style=&quot;color: red;&quot;&gt;string&lt;/span&gt;&amp;nbsp;name);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;class&lt;/span&gt;&amp;nbsp;Service : IService&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;string&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: midnightblue; font-weight: bold;&quot;&gt;MyOperation&lt;/span&gt;(&lt;span style=&quot;color: red;&quot;&gt;string&lt;/span&gt;&amp;nbsp;name)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;// implement the operation&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: navy;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;string&lt;/span&gt;.&lt;span style=&quot;color: midnightblue; font-weight: bold;&quot;&gt;Format&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;&quot;Operation name: {0}&quot;&lt;/span&gt;,&amp;nbsp;name);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;6. Include the Visual Studio MSBuild Targets&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;By default sharpdevlop ide was included the visual studio web application msbbuild targets. These msbuild targets are required to package the rest full wcf service as a zip file and also publish the zip files into the IIS Web Site.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the RestDemoService.csproj file and import the &lt;b&gt;Microsoft.WebApplication.targets &lt;/b&gt;file.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt; &lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;lt;Import Project=&quot;$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets&quot; /&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
My windows 7 operating system is 32 bit machine and I have installed the&amp;nbsp; Visual Studio 2010 Shell 32 bit version. If your installed 64 bit version choose the path MSBuildExtensionsPath64. The sample 64 bit version as follows:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;lt;Import 
Project=&quot;$(MSBuildExtensionsPath64)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets&quot;
 /&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; Include the .svc and .config file in the Package&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; By default .svc and .config files are not included in the package. We need to modify the .csproj file&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Original Version:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;None Include=&quot;Service.svc&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;None Include=&quot;web.config&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/ItemGroup&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Modified Version:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Content Include=&quot;Service.svc&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Content Include=&quot;web.config&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/ItemGroup&amp;gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
7. Check in the Code into your repository.&amp;nbsp;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
My sample repository is svn.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://mirrors.jenkins-ci.org/windows/latest&quot;&gt;8. Download the Jenkins and Install &lt;/a&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;9. Configuring the MSBuild .Net Plugin&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console and Click Manage Jenkins --&amp;gt; &lt;b&gt;Manage Plugins --&amp;gt; Available&amp;nbsp; --&amp;gt; Select MsBuild Plugin --&amp;gt;Click Install Without Restart Button&lt;/b&gt;. It will install the MSBuild .Net Plugin&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
10.&amp;nbsp; Configuring the MSBuild Compiler&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console and Click Manage Jenkins --&amp;gt; &lt;b&gt;Configure System --&amp;gt; Add MSBuild&amp;nbsp; --&amp;gt;Enter the following details.&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;MSBuild Name: MsBuild - 4.0&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Path to MSBuild: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe &lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
In my example i am using the .net framework 4.0 and I have entered the msbuild .net 4.0 as shown above.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Click Save and It will save the MSBuild Configuration.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
11.&amp;nbsp; Creating the Jenkin Job&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console --&amp;gt; Click New Item and Enter the following details to create the Jenkin Job:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
1. Enter Item Name: Rest Demo Service&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
2. Select Freestyle project.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Click OK Button and It will create the Jenkin Job.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
12. Configuring the Source Control&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console --&amp;gt; Click Jenknin job Rest Demo Service -&amp;gt; Configure --&amp;gt; Select Subversion in the Source Code Management and Enter the &lt;b&gt;Repository URL&lt;/b&gt;. After entering the URL and It will ask the Credentials. Please click the Credentials and it will authenticate the user against the SVN Authentication repository. Leave the rest of the options as it is and Click Save Button and It will configure the subversion.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
13.&amp;nbsp; Triggering the Build&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console --&amp;gt; Click Jenknin job Rest Demo Service -&amp;gt; Select Poll SCM and Enter the Schedule Time. My Sample build needs to be run every 11 Hours once. I have configured as follows:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
H 11 * * *&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
14. Configuring the Build&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console --&amp;gt; Click Jenknin job Rest Demo Service -&amp;gt; Enter the following details:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;1. MSBuild Version:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; This msbuild version is already configured in the configure system. Please select the MSBuild Version in the Combo box. In My case MSBuild Version is MSBuild - 4.0&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;2. MSBuild Build File:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; Enter the Solution File or Project File. In my example Solution File Name is RestDemoService.sln&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;3. Command Line Arguments:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
/t:clean /t:rebuild /p:Configuration=Debug /p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:MSDeployPublishMethod=RemoteAgent /p:CreatePackageOnPublish=True /p:DeployIisAppPath=&quot;Default Web Site/RestDemoService&quot; /p:MsDeployServiceUrl=&amp;lt;Remote Agent Host Name&amp;gt;&amp;nbsp; /p:username=&quot;Administrator User Name&quot; /p:password=&amp;lt;Admin Password&amp;gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
I am deploying the application in Default Web Site/RestDemoService. You can replace with your Web Site/Application Name.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Deploying the Application Remote Server&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
MSDeployPublishMethod = RemoteAgent&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
MsDeployServiceUrl = Remote Host Name&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Deploying the Application Local Machine&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;MSDeployPublishMethod = InProc&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
username=Administrator User Name&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
password=Administrator Password&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
The above command will clean the build, compile the build and package as a zip file and publish to the IIS using the Deployment Manager using msbuild.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
15. Running the Jenkin Job&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Jenkin Console --&amp;gt; Click Jenknin job Rest Demo Service -&amp;gt; Click Build Now. It will build the web application and deploy web application into the IIS.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
16. Testing the WCF REST Service&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open the Browser and Access the following URL to test the WCF Web Service:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
http://localhost/RestDemoService/Service.svc/operation/add&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Response:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;

&lt;b&gt;&lt;span class=&quot;html-tag&quot; style=&quot;-webkit-text-stroke-width: 0px; font-family: monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;&amp;lt;string&lt;span class=&quot;html-attribute&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;html-attribute-name&quot;&gt;xmlns&lt;/span&gt;=&quot;&lt;span class=&quot;html-attribute-value&quot;&gt;http://schemas.microsoft.com/2003/10/Serialization/&lt;/span&gt;&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;text&quot; style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;Operation name: add&lt;/span&gt;&lt;span class=&quot;html-tag&quot; style=&quot;-webkit-text-stroke-width: 0px; font-family: monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;&amp;nbsp;

&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span class=&quot;html-tag&quot; style=&quot;-webkit-text-stroke-width: 0px; font-family: monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;

&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/2629781600080741436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/12/how-to-develop-and-deploy-wcf-rest.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/2629781600080741436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/2629781600080741436'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/12/how-to-develop-and-deploy-wcf-rest.html' title='How to Develop and Deploy WCF REST Servvice Web Deployment Manager / Jenkins'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-865814315215936529</id><published>2014-11-20T13:25:00.000-08:00</published><updated>2015-08-12T11:48:20.990-07:00</updated><title type='text'>javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;b&gt;Error:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:182)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:153)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:284)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.xml.ws.client.WSServiceDelegate.&amp;lt;init&amp;gt;(WSServiceDelegate.java:246)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.xml.ws.client.WSServiceDelegate.&amp;lt;init&amp;gt;(WSServiceDelegate.java:197)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.xml.ws.client.WSServiceDelegate.&amp;lt;init&amp;gt;(WSServiceDelegate.java:187)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.wsee.jaxws.spi.WLSServiceDelegate.&amp;lt;init&amp;gt;(WLSServiceDelegate.java:84)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegate.&amp;lt;init&amp;gt;(WLSProvider.java:598)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:120)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:112)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:83)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at javax.xml.ws.Service.&amp;lt;init&amp;gt;(Service.java:56)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at edu.sfsu.excs.ExchangeConnectorService.&amp;lt;init&amp;gt;(ExchangeConnectorService.java:42)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at edu.sfsu.exchange.connector.util.ExchangeConnectorUtil.getExchangeConnectorServiceSoap(Unknown Source)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at edu.sfsu.exchange.connector.adapter.ExchangeConnectorWrapper.buildEXCSConfig(Unknown Source)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at edu.sfsu.exchange.connector.adapter.ExchangeConnectorProcessTask.createUser(Unknown Source)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.reflect.Method.invoke(Method.java:597)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.adapterGlue.ScheduleItemEvents.adpEXCS_CREATEUSER.CREATEUSER(adpEXCS_CREATEUSER.java:110)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.adapterGlue.ScheduleItemEvents.adpEXCS_CREATEUSER.implementation(adpEXCS_CREATEUSER.java:54)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.client.events.tcBaseEvent.run(tcBaseEvent.java:196)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.runEvent(tcDataObj.java:2492)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcScheduleItem.runMilestoneEvent(tcScheduleItem.java:2919)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcScheduleItem.eventPostUpdate(tcScheduleItem.java:742)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.update(tcDataObj.java:664)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:508)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcScheduleItem.checkChildrenIfCompleted(tcScheduleItem.java:1808)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcScheduleItem.checkChildren(tcScheduleItem.java:1852)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcScheduleItem.eventPostUpdate(tcScheduleItem.java:723)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.update(tcDataObj.java:664)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:508)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcORC.completeSystemValidationMilestone(tcORC.java:1190)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcOrderItemInfo.completeCarrierBaseMilestone(tcOrderItemInfo.java:735)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcOrderItemInfo.eventPostInsert(tcOrderItemInfo.java:172)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcUDProcess.eventPostInsert(tcUDProcess.java:237)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:604)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcTableDataObj.save(tcTableDataObj.java:2906)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcORC.autoDOBSave(tcORC.java:3002)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.util.tcOrderPackages.createOrder(tcOrderPackages.java:526)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.util.tcOrderPackages.orderPackageForUser(tcOrderPackages.java:177)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcOIU.provision(tcOIU.java:527)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcOIU.eventPostInsert(tcOIU.java:306)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.insert(tcDataObj.java:604)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcDataObj.save(tcDataObj.java:474)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.thortech.xl.dataobj.tcTableDataObj.save(tcTableDataObj.java:2906)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cause:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Renew the SSL Certificates are imported into the Web Logic Trusted Key Store.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To resolve the above error, We need to enable ssl JSSE implementation in web logic server as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Modify the startNodeManager.sh file&lt;/b&gt;&lt;br /&gt;
Add the JAVA_OPTIONS=&quot;${JAVA_OPTIONS} -Dweblogic.ssl.JSSEEnabled=true&quot;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;2. Modify the setDomainEnv.sh File &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;Add the JAVA_OPTIONS=&quot;${JAVA_OPTIONS} -Dweblogic.ssl.JSSEEnabled=true&quot;&lt;b&gt; &lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After adding modifying the startNodeManager.sh and setDomainEnv.sh file and restart the Node Manager and Web Logic Managed Server and also Admin Server. The issue will be resolved.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Client Side:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If the issue is getting the client side, add the following property into a java system variable and the issue will be resolved.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Tahoma, Verdana, Helvetica, sans-serif; font-size: x-small;&quot;&gt;-Dweblogic.security.SSL.enableJSSE=true&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Tahoma, Verdana, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; font-family: Tahoma, Verdana, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/865814315215936529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/11/javaxnetsslsslkeyexception-fatal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/865814315215936529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/865814315215936529'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/11/javaxnetsslsslkeyexception-fatal.html' title='javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received.'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-3611942882081628127</id><published>2014-09-15T10:56:00.000-07:00</published><updated>2014-09-15T10:56:35.289-07:00</updated><title type='text'>Configuring Openldap TLS/SSL</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;Configuring Openldap TLS/SSL&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Environment: Cent OS 6.5 64 Bit&lt;br /&gt;
&lt;h3&gt;
1. Configuring the TLS open Ldap&lt;/h3&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; The following steps needs to be performed to enable the TLS in openldap:&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
&amp;nbsp; &amp;nbsp; 1.1 Login as a root or sudo user with root previliges&lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.2 Create the ssl Directory&lt;/h4&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Create the ssl directory to store the new Certificate Authority, Server Certicate, and Server Key.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; mkdir ssl&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; cd ssl&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; 1.3 Create the new Certificate Authority&lt;/h4&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Execute the following command to create the new ca&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /etc/pki/tls/misc/CA -newca&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The following input parameters needed after executing the newca command and I have highlighted&amp;nbsp; the steps in bold font.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a) Enter Command to create the New CA Private Key&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b) Enter the PEM Pass Phrase&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c) Enter the CA Certificate details and the Common Name is mandatory field.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;CA certificate filename (or enter to create)&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stored in the /etc/pki/CA/private/ as a cakey.pem.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
Making CA certificate ...&lt;br /&gt;Generating a 2048 bit RSA private key&lt;br /&gt;................................+++&lt;br /&gt;..................+++&lt;br /&gt;writing new private key to &#39;/etc/pki/CA/private/./cakey.pem&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Enter PEM pass phrase:&lt;br /&gt;Verifying - Enter PEM pass phrase:&lt;/b&gt;-----&lt;br /&gt;You are about to be asked to enter information that will be incorporated&lt;br /&gt;into your certificate request.&lt;br /&gt;What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;There are quite a few fields but you can leave some blank&lt;br /&gt;For some fields there will be a default value,&lt;br /&gt;If you enter &#39;.&#39;, the field will be left blank.&lt;br /&gt;-----&lt;br /&gt;&lt;b&gt;Country Name (2 letter code) [XX]:US&lt;br /&gt;State or Province Name (full name) []:CA&lt;br /&gt;Locality Name (eg, city) [Default City]:San Francisco&lt;br /&gt;Organization Name (eg, company) [Default Company Ltd]:Example.EDU&lt;br /&gt;Organizational Unit Name (eg, section) []:&lt;br /&gt;Common Name (eg, your name or your server&#39;s hostname) []:Example.EDU&lt;br /&gt;Email Address []:&lt;br /&gt;&lt;br /&gt;Please enter the following &#39;extra&#39; attributes&lt;br /&gt;to be sent with your certificate request&lt;br /&gt;A challenge password []:&lt;br /&gt;An optional company name []:&lt;/b&gt;Using configuration from /etc/pki/tls/openssl.cnf&lt;br /&gt;Enter pass phrase for /etc/pki/CA/private/./cakey.pem:&lt;br /&gt;Check that the request matches the signature&lt;br /&gt;Signature ok&lt;br /&gt;Certificate Details:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial Number: 9263543358417925999 (0x808eb79aa7edf76f)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Validity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not Before: Sep 15 16:35:54 2014 GMT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not After : Sep 14 16:35:54 2017 GMT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subject:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; countryName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = US&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stateOrProvinceName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = CA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; organizationName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Example.EDU&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commonName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Example.EDU&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 extensions:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Subject Key Identifier: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10:45:D2:A1:9F:2D:3C:69:8D:86:AD:48:CD:97:3C:97:13:B2:A1:AA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Authority Key Identifier: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keyid:10:45:D2:A1:9F:2D:3C:69:8D:86:AD:48:CD:97:3C:97:13:B2:A1:AA&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Basic Constraints: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CA:TRUE&lt;br /&gt;Certificate is to be certified until Sep 14 16:35:54 2017 GMT (1095 days)&lt;br /&gt;&lt;br /&gt;Write out database with 1 new entries&lt;br /&gt;Data Base Updated&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 1.4 Copy the CA certificate from /etc/pki/CA/newcerts/ to ssl&lt;/h4&gt;
The ca certificate stored in the&amp;nbsp; /etc/pki/CA/newcerts/ as a random generated string with pem extension. In my example ca certificate name is 808EB79AA7EDF76F.pem.&lt;br /&gt;
&lt;br /&gt;
cp /etc/pki/CA/newcerts/808EB79AA7EDF76F.pem exampleca.pem&lt;br /&gt;
&lt;br /&gt;
You can replace example.pem to your own name.&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 1.5 Creating the Cert Reqest&lt;/h4&gt;
&amp;nbsp;&amp;nbsp; The following command is being used to create the cert request and it requires the common name parameter as a mandatory parameter and that parameter should be host name of the openldap server. In my example host name is localhost.localdomain.&lt;br /&gt;
&lt;br /&gt;
openssl req -new -nodes -keyout newreq.pem -out newreq.pem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The &lt;tt&gt;-nodes&lt;/tt&gt; argument above prevents encryption of the private key. OpenLDAP only works with unencrypted private keys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generating a 2048 bit RSA private key&lt;br /&gt;...............................................................................................................................................+++&lt;br /&gt;.+++&lt;br /&gt;writing new private key to &#39;newreq.pem&#39;&lt;br /&gt;-----&lt;br /&gt;You are about to be asked to enter information that will be incorporated&lt;br /&gt;into your certificate request.&lt;br /&gt;What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;There are quite a few fields but you can leave some blank&lt;br /&gt;For some fields there will be a default value,&lt;br /&gt;If you enter &#39;.&#39;, the field will be left blank.&lt;br /&gt;-----&lt;br /&gt;Country Name (2 letter code) [XX]:US&lt;br /&gt;State or Province Name (full name) []:CA&lt;br /&gt;Locality Name (eg, city) [Default City]:San Francisco&lt;br /&gt;Organization Name (eg, company) [Default Company Ltd]:Example&lt;br /&gt;Organizational Unit Name (eg, section) []:&lt;br /&gt;Common Name (eg, your name or your server&#39;s hostname) []:localhost.localdomain&lt;br /&gt;Email Address []:&lt;br /&gt;&lt;br /&gt;Please enter the following &#39;extra&#39; attributes&lt;br /&gt;to be sent with your certificate request&lt;br /&gt;A challenge password []:&lt;br /&gt;An optional company name []:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
After executing the above command it will create the newreq.pem file in the ssl directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 1.6 Signing the Certificate&lt;/h4&gt;
Execute the following command to sign the certificate and it will stored in the ssl directory as &lt;b&gt;newcert.pem&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
/etc/pki/tls/misc/CA -sign&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sing configuration from /etc/pki/tls/openssl.cnf&lt;br /&gt;Enter pass phrase for /etc/pki/CA/private/cakey.pem:&lt;br /&gt;Check that the request matches the signature&lt;br /&gt;Signature ok&lt;br /&gt;Certificate Details:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial Number: 9263543358417926000 (0x808eb79aa7edf770)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Validity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not Before: Sep 15 16:43:45 2014 GMT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not After : Sep 15 16:43:45 2015 GMT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subject:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; countryName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = US&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stateOrProvinceName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = CA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localityName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = San Francisco&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; organizationName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Example&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commonName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = localhost.localdomain&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 extensions:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Basic Constraints: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CA:FALSE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Netscape Comment: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OpenSSL Generated Certificate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Subject Key Identifier: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 83:46:4D:C7:B6:3A:3F:62:3B:87:D5:C4:75:10:18:07:FC:45:5D:9A&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Authority Key Identifier: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keyid:10:45:D2:A1:9F:2D:3C:69:8D:86:AD:48:CD:97:3C:97:13:B2:A1:AA&lt;br /&gt;&lt;br /&gt;Certificate is to be certified until Sep 15 16:43:45 2015 GMT (365 days)&lt;br /&gt;Sign the certificate? [y/n]:y&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1 out of 1 certificate requests certified, commit? [y/n]y&lt;br /&gt;Write out database with 1 new entries&lt;br /&gt;Data Base Updated&lt;br /&gt;Certificate:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Data:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Version: 3 (0x2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial Number: 9263543358417926000 (0x808eb79aa7edf770)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Signature Algorithm: sha1WithRSAEncryption&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Issuer: C=US, ST=CA, O=Example.com, CN=Example.EDU&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Validity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not Before: Sep 15 16:43:45 2014 GMT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Not After : Sep 15 16:43:45 2015 GMT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subject: C=US, ST=CA, L=San Francisco, O=Example, CN=localhost.localdomain&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subject Public Key Info:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Key Algorithm: rsaEncryption&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public-Key: (2048 bit)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Modulus:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:c2:20:e8:2b:c3:5c:0d:90:cc:ad:81:3c:34:08:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fc:36:d0:ca:6a:0c:06:8c:46:4f:c3:4f:1f:ef:b7:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b1:50:42:a7:43:5d:88:73:2f:d2:3e:0a:4e:fe:50:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ae:0f:65:26:17:a4:24:cc:4f:1f:5b:72:81:61:fc:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ec:32:8e:0f:e5:c3:8e:89:da:87:a7:25:b1:b2:e1:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29:db:7e:17:c1:a0:d1:df:80:f1:54:94:2d:30:ef:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ab:9f:61:ac:70:24:29:41:7e:a1:31:9f:d4:41:4e:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; db:23:2e:75:49:b4:c5:e5:92:b2:5f:d9:4b:bd:e3:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 13:0f:e7:4b:56:a0:bf:70:9b:61:e7:e1:cc:2e:ea:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e6:a2:cc:68:ad:83:02:ef:ce:40:31:3f:6a:c4:a0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01:d1:b2:e8:08:a8:a2:93:5f:35:76:56:80:47:3a:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4e:65:b3:86:3d:7c:b6:a0:50:66:ca:52:15:7f:f0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4b:41:8e:4d:77:b0:45:ca:f7:ed:ae:c9:a8:26:4e:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3d:76:7a:70:f3:ca:ab:2f:89:4c:e3:bb:22:be:24:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 93:c5:4f:19:c4:a5:3d:99:14:2b:8b:9d:97:57:51:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24:c5:d8:88:75:98:fb:d7:35:f7:2c:ab:41:a6:88:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40:14:46:c1:2b:88:f7:0c:68:85:97:a8:ad:bb:56:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4d:91&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exponent: 65537 (0x10001)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 extensions:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Basic Constraints: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CA:FALSE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Netscape Comment: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OpenSSL Generated Certificate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Subject Key Identifier: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 83:46:4D:C7:B6:3A:3F:62:3B:87:D5:C4:75:10:18:07:FC:45:5D:9A&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509v3 Authority Key Identifier: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keyid:10:45:D2:A1:9F:2D:3C:69:8D:86:AD:48:CD:97:3C:97:13:B2:A1:AA&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Signature Algorithm: sha1WithRSAEncryption&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aa:03:f3:dc:bc:20:88:ba:bc:3d:16:06:17:c5:25:a7:87:c8:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18:96:a8:e0:33:9e:21:3f:ce:a0:54:c8:fd:13:c3:9c:3a:c7:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1d:d7:0d:b3:8d:a9:64:9f:bf:32:50:59:26:2a:2d:9c:a6:fa:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f7:67:87:ec:1e:f3:ac:0e:9f:b5:48:47:56:af:93:a5:b7:86:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bf:9c:63:f7:ab:25:73:d1:8e:55:79:2a:7a:23:16:21:77:28:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 93:ad:a8:64:eb:bc:07:e7:a0:eb:14:69:61:b5:52:a9:2a:47:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ef:84:9d:c6:5b:1d:c8:bd:8b:b4:61:64:14:88:91:45:68:4f:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 17:61:b1:33:f7:9c:3d:91:a9:31:33:54:ed:9b:7b:13:35:22:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36:1b:52:23:fe:20:f4:3b:33:74:6f:71:fb:e5:ed:76:28:92:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:69:d6:12:03:44:a6:c8:02:ed:72:c1:7e:57:57:0c:58:a2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 95:a3:db:1c:57:89:b6:92:64:64:4e:f2:2d:d2:8f:95:35:91:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1b:4c:cd:89:87:44:01:68:2c:91:c9:af:79:69:0b:b1:a2:75:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a3:15:2f:35:02:a3:26:08:5d:01:6f:6b:8e:d0:f3:36:f7:4f:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c2:26:d2:a0:7f:ce:cc:36:b1:5a:2a:fb:fb:26:f6:93:c9:87:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1b:59:fe:c4&lt;br /&gt;-----BEGIN CERTIFICATE-----&lt;br /&gt;MIIDqDCCApCgAwIBAgIJAICOt5qn7fdwMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV&lt;br /&gt;BAYTAlVTMQswCQYDVQQIDAJDQTEUMBIGA1UECgwLRXhhbXBsZS5jb20xFDASBgNV&lt;br /&gt;BAMMC0V4YW1wbGUuRURVMB4XDTE0MDkxNTE2NDM0NVoXDTE1MDkxNTE2NDM0NVow&lt;br /&gt;ZDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNp&lt;br /&gt;c2NvMRAwDgYDVQQKDAdFeGFtcGxlMR4wHAYDVQQDDBVsb2NhbGhvc3QubG9jYWxk&lt;br /&gt;b21haW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCIOgrw1wNkMyt&lt;br /&gt;gTw0CPw20MpqDAaMRk/DTx/vt7FQQqdDXYhzL9I+Ck7+UK4PZSYXpCTMTx9bcoFh&lt;br /&gt;/Owyjg/lw46J2oenJbGy4SnbfhfBoNHfgPFUlC0w76ufYaxwJClBfqExn9RBTtsj&lt;br /&gt;LnVJtMXlkrJf2Uu94xMP50tWoL9wm2Hn4cwu6uaizGitgwLvzkAxP2rEoAHRsugI&lt;br /&gt;qKKTXzV2VoBHOk5ls4Y9fLagUGbKUhV/8EtBjk13sEXK9+2uyagmTj12enDzyqsv&lt;br /&gt;iUzjuyK+JJPFTxnEpT2ZFCuLnZdXUSTF2Ih1mPvXNfcsq0GmiEAURsEriPcMaIWX&lt;br /&gt;qK27Vk2RAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5T&lt;br /&gt;U0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSDRk3Htjo/YjuH1cR1&lt;br /&gt;EBgH/EVdmjAfBgNVHSMEGDAWgBQQRdKhny08aY2GrUjNlzyXE7KhqjANBgkqhkiG&lt;br /&gt;9w0BAQUFAAOCAQEAqgPz3LwgiLq8PRYGF8Ulp4fIGJao4DOeIT/OoFTI/RPDnDrH&lt;br /&gt;HdcNs42pZJ+/MlBZJiotnKb692eH7B7zrA6ftUhHVq+TpbeGv5xj96slc9GOVXkq&lt;br /&gt;eiMWIXcok62oZOu8B+eg6xRpYbVSqSpH74SdxlsdyL2LtGFkFIiRRWhPF2GxM/ec&lt;br /&gt;PZGpMTNU7Zt7EzUiNhtSI/4g9DszdG9x++XtdiiSAGnWEgNEpsgC7XLBfldXDFii&lt;br /&gt;laPbHFeJtpJkZE7yLdKPlTWRG0zNiYdEAWgskcmveWkLsaJ1oxUvNQKjJghdAW9r&lt;br /&gt;jtDzNvdPwibSoH/OzDaxWir7+yb2k8mHG1n+xA==&lt;br /&gt;-----END CERTIFICATE-----&lt;br /&gt;Signed certificate is in newcert.pem&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 1.7 Renaming the Certicates&lt;/h4&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; This step is optional. For naming convention we are renaming the certs.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv newcert.pem servercert.pem&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv newreq.pem serverkey.pem&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 1.8 Copy the Certifcates from ssl to /etc/openldap/certs/&lt;/h4&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cp exampleca.pem /etc/openldap/certs/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp server* /etc/openldap/certs/&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 1.9 Change the OwnerChip from root to ldap&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; chown ldap:ldap /etc/openldap/certs/exampleca.pem&lt;br /&gt;&amp;nbsp;&amp;nbsp; chown ldap:ldap /etc/openldap/certs/server*&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; 1.10&amp;nbsp; Include the Server Certificate and Server Key in the cn=Config Object&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ldapmodify -D cn=config -H ldap://localhost.localdomain -W&lt;br /&gt;Enter Password:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;dn: cn=config&lt;br /&gt;changetype: modify&lt;br /&gt;replace: olcTLSCertificateFile&lt;br /&gt;olcTLSCertificateFile: /etc/openldap/certs/servercert.pem&lt;br /&gt;&lt;br /&gt;dn: cn=config&lt;br /&gt;changetype: modify&lt;br /&gt;replace: olcTLSCertificateKeyFile&lt;br /&gt;olcTLSCertificateKeyFile: /etc/openldap/certs/serverkey.pem&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 1.11 Modifying the ldap.conf file in the /etc/openldap/&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Add the following parameters into the ldap.conf file to enable the TLS.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; SSL ON&lt;br /&gt;&amp;nbsp;&amp;nbsp; TLS_CACERTDIR&amp;nbsp;&amp;nbsp; /etc/openldap/certs&lt;br /&gt;&amp;nbsp;&amp;nbsp; TLS_REQCERT Allow&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; &lt;b&gt;1.12 Restart the OpenLdap Server&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp; /etc/init.d/slapd stop&lt;br /&gt;&amp;nbsp; /etc/init.d/slapd start&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp; 1.3 Testing the TLS &lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ldapsearch -H ldap://localhost.localdomain -D cn=Manager,dc=example,dc=edu -b dc=example,dc=edu -s base -W -ZZ&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Enter LDAP Password: &lt;br /&gt;# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &amp;lt;dc=example,dc=edu&amp;gt; with scope baseObject&lt;br /&gt;# filter: (objectclass=*)&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# example.edu&lt;br /&gt;dn: dc=example,dc=edu&lt;br /&gt;objectClass: dcObject&lt;br /&gt;objectClass: organization&lt;br /&gt;o: Example&lt;br /&gt;dc: example&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 3&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 2&lt;br /&gt;# numEntries: 1&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
In the above command i have used &lt;b&gt;-ZZ&lt;/b&gt; parameter because to start the TLS Session and also it mandatory to start the TLS Session.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
2. Configuring the SSL open Ldap&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.1 Modify the /etc/sysconfig/ldap file&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Modify the following parameters in the /etc/sysconfig/ldap file to enable the&amp;nbsp;&amp;nbsp; ssl&lt;br /&gt;&lt;br /&gt;SLAPD_LDAPS=yes&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.2 Restart the OpenLdap Server &lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Restart the Open Ldap Server and Take effect the changes.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /etc/init.d/slapd stop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /etc/init.d/slapd start&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.3 Testing the SSL Configuration&lt;/h4&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
ldapsearch -H ldaps://localhost.localdomain -D cn=Manager,dc=example,dc=edu -b dc=example,dc=edu -s base -W &lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Enter LDAP Password: &lt;br /&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &amp;lt;dc=example,dc=edu&amp;gt; with scope baseObject&lt;br /&gt;# filter: (objectclass=*)&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# example.edu&lt;br /&gt;dn: dc=example,dc=edu&lt;br /&gt;objectClass: dcObject&lt;br /&gt;objectClass: organization&lt;br /&gt;o: Example&lt;br /&gt;dc: example&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 2&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 2&lt;br /&gt;# numEntries: 1&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;3. References&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.openldap.org/faq/data/cache/185.html&quot;&gt;http://www.openldap.org/faq/data/cache/185.html&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/3611942882081628127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/09/configuring-openldap-tlsssl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/3611942882081628127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/3611942882081628127'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/09/configuring-openldap-tlsssl.html' title='Configuring Openldap TLS/SSL'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-6479155487793532633</id><published>2014-09-09T15:16:00.000-07:00</published><updated>2014-09-09T18:38:39.178-07:00</updated><title type='text'>ldap_add: Other (e.g., implementation specific) error (80)  additional info: olcRefintAttribute : attribute type undefined</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Error:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I got the following error while adding the config object to the openldap.&lt;br /&gt;
&lt;br /&gt;
ldapadd -D cn=Config -H ldap://localhost -W&lt;br /&gt;
&lt;br /&gt;
dn: olcOverlay=refint,olcDatabase={2}bdb,cn=config&lt;br /&gt;
changetype: add&lt;br /&gt;
objectClass: olcConfig&lt;br /&gt;
objectClass: olcRefIntConfig&lt;br /&gt;
objectClass: olcOverlayConfig&lt;br /&gt;
objectClass: top&lt;br /&gt;
olcRefIntAttribute: memberof member manager owner seeAlos&lt;br /&gt;
olcOverlay: refint&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ldap_add: Other (e.g., implementation specific) error (80)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; additional info: olcRefintAttribute &lt;b&gt;&amp;lt;seeAlos&amp;gt;&lt;/b&gt;: attribute type undefined&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cause:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;seeAlos&lt;/b&gt; attribute not available in the schema and also syntax error.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I have modified the attribute name from seeAlos to seeAlso and issue is resolved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/6479155487793532633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/09/ldapadd-other-eg-implementation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6479155487793532633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6479155487793532633'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/09/ldapadd-other-eg-implementation.html' title='ldap_add: Other (e.g., implementation specific) error (80)  additional info: olcRefintAttribute &lt;seeAlos&gt;: attribute type undefined'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-6701091386357610150</id><published>2014-07-29T10:46:00.001-07:00</published><updated>2014-07-29T10:47:16.581-07:00</updated><title type='text'>OIM Account Restore User Status From Deleted to Active</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Restoring the Deleted Account in OIM&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When you delete the user from the Oracle Identity Manager System, the user will not been removed physically from the system and also it changes the status from Active to Deleted. It also revoke the resources from the target system for the deleted user.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I need to reactivate the deleted user from the Oracle Identity Manager as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. Login to the OIM data base user into the data base and update the user status from Deleted to Active.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2. Execute the following sql to update the user status&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
UPDATE USR SET USR_STATUS = &#39;Active&#39; WHERE usr_login=&#39;login id&#39;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
replace &lt;b&gt;login id &lt;/b&gt;with your login id.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
3. Login to the OIM Admin Console and verify the user status is changed &amp;nbsp;from Deleted to Active.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
4. Re-Provision the users.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/6701091386357610150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/07/oim-account-restore-user-status-from.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6701091386357610150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6701091386357610150'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/07/oim-account-restore-user-status-from.html' title='OIM Account Restore User Status From Deleted to Active'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-6589711219246790961</id><published>2014-07-24T11:01:00.000-07:00</published><updated>2014-07-24T11:01:39.063-07:00</updated><title type='text'>Building the OIM metadata for data base Incremental reconciliation icf connector </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Pre-Requisite&lt;/h2&gt;
&lt;div&gt;
&lt;a href=&quot;http://idmoim.blogspot.com/2014/07/building-oim-metadata-for-data-base.html&quot;&gt;Build the OIM Metadata for Reconciliation&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Incremental Target Reconciliation can be build in OIM using the SearchReconTask and also SyncReconTask. To build the incremental reconciliation, the following components needs to be modified and Developed:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Incremental Reconciliation for Database ICF SearchReconTask&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
1.&amp;nbsp;Lookup.dbicf.Configuration&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Add the&amp;nbsp;&lt;b&gt;Recon Date Format&lt;/b&gt;&amp;nbsp;as a lookup code and decode should be valid java date format. For example&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;b&gt;Recon Date Format&lt;/b&gt;&lt;/td&gt;
  &lt;td&gt;&amp;nbsp;- &lt;b&gt;yyyy/MM/dd HH:mm:ss&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
2.&amp;nbsp;DataBaseIdentityFilter Class&lt;/h3&gt;
&lt;div&gt;
Override the&amp;nbsp;createGreaterThanExpression and&amp;nbsp;createAndExpression methods to implement the Incremental Reconciliation.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; @Override&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;protected String createGreaterThanExpression(&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;GreaterThanFilter filter, boolean not) {&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; String operation=&quot;createGreaterThanOrEqualExpression - &quot;;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt; logger.ok(operation + &quot; Started&quot;);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String query= null;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(not)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return query;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Attribute attr= filter.getAttribute();&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(attr==null || attr.getValue()==null || (attr.getValue()!=null &amp;amp;&amp;amp; attr.getValue().isEmpty()))&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return query;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name=filter.getName();&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object val=attr.getValue().get(0);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(DataBaseIdentityUtil.isEmpty(val))&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new ConnectorException(&quot;The filter value can not be empty&quot;);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String strValue=DataBaseIdentityUtil.getString(val);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(name.equalsIgnoreCase(&quot;updateDate&quot;))&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; query=&quot;T.&quot;+name + &quot; &amp;gt; FUNC(&#39;TO_DATE&#39;,&#39;&quot;+DataBaseIdentityUtil.convertDateToString(new Date(new Long(strValue).longValue()))+&quot;&#39;,&#39;&quot;+DataBaseIdentityConstants.DB_DATE_FORMAT+&quot;&#39;)&quot;;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; query=&quot;T.&quot;+name + &quot; &amp;gt; &#39;&quot;+strValue+&quot;&#39;&quot;;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logger.ok(operation + &quot; Final Filter &quot;+query);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logger.ok(operation + &quot; Ended &quot;);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return query;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;@Override&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;protected String createAndExpression(String leftExpression,&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;String rightExpression) {&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;return leftExpression + &quot; AND &quot;+ rightExpression;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;3. Schedule Task Reconciliation Metadata&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
Add the&amp;nbsp;&lt;b&gt;Scheduled Task Name &lt;/b&gt;parameter name in the&amp;nbsp;&lt;b&gt;Schedule Task Reconciliation Metadata&lt;/b&gt; file. After Adding the&amp;nbsp;parameter to the file as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;lt;?xml version = &#39;1.0&#39; encoding = &#39;UTF-8&#39;?&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;xl-ddm-data version=&quot;2.0.1.0&quot; user=&quot;XELSYSADM&quot; database=&quot;jdbc:oracle:thin:@localhost:5524/estView.regress.rdbms.dev.us.oracle.com&quot; exported-date=&quot;1307546406635&quot; description=&quot;FF&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;scheduledTask repo-type=&quot;MDS&quot; name=&quot;DataBaseICFConnectorReconciliation&quot; mds-path=&quot;/db&quot; mds-file=&quot;DataBaseICFConnectorReconciliation.xml&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;completeXml&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;scheduledTasks xmlns=&quot;http://xmlns.oracle.com/oim/scheduler&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;task&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;DataBaseICFConnectorReconciliation&amp;lt;/name&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;class&amp;gt;oracle.iam.connectors.icfcommon.recon.SearchReconTask&amp;lt;/class&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;DataBaseICFConnectorReconciliation&amp;lt;/description&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;retry&amp;gt;0&amp;lt;/retry&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;parameters&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Filter&quot;&amp;gt;Filter&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Incremental Recon Date Attribute&quot;&amp;gt;Incremental Recon Date Attribute&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;IT Resource Name&quot;&amp;gt;IT Resource Name&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Object Type&quot;&amp;gt;Object Type&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Latest Token&quot;&amp;gt;Latest Token&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Resource Object Name&quot;&amp;gt;Resource Object Name&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;&amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Scheduled Task Name&quot;&amp;gt;Scheduled Task Name&amp;lt;/string-param&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/parameters&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/task&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/scheduledTasks&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/completeXml&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;/scheduledTask&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;/xl-ddm-data&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The newly added parameter is highlighted as a bold &amp;nbsp;font.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;b&gt;4. Import Schedule Task Reconciliation Metadata&lt;/b&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Re-import the Schedule Task Reconciliation Metadata into the oim repository as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Login to the OIM Console &amp;nbsp;--&amp;gt; Advance --&amp;gt; Import Deployment Manager File --&amp;gt; Select the Scheduler Task File &amp;nbsp;--&amp;gt; Add File --&amp;gt; Import. It will import the XMl File into the OIM Repository.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;5.&amp;nbsp;DataBaseIdentityConnector Class&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
Include the Incremental Recon Date Attribute parameter as a Long value in the ConnectorObject attributes in the executeQuery method. The sample code is given below.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public void executeQuery(ObjectClass objectClass, String filter,&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;ResultsHandler handler, OperationOptions operations) {&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;logger.ok(&quot;executeQuery Started&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;logger.ok(&quot;executeQuery filter &quot;+filter);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;List&amp;lt;String&amp;gt; returnAttrs= new ArrayList&amp;lt;String&amp;gt;();&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;if(operations != null)&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;for (String attr: operations.getAttributesToGet())&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;logger.ok(&quot;executeQuery Attributes &quot;+attr);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;returnAttrs.add(attr);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;List&amp;lt;UserProfile&amp;gt; profiles=userProfileDao.findByUsersCriteria(filter);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;logger.ok(&quot;executeQuery Result &quot;+profiles);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;if(profiles != null &amp;amp;&amp;amp; !profiles.isEmpty())&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;for (UserProfile userProfile : profiles)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;ConnectorObject conobj=DataBaseIdentityUtil.convertMapToConnectorObject(userProfile);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;if(returnAttrs.contains(DataBaseIdentityConstants.LAST_UPDATE))&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;     &lt;/span&gt;conobj=DataBaseIdentityUtil.convertMapToConnectorObject(userProfile,DataBaseIdentityConstants.LAST_UPDATE);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;else if(returnAttrs.contains(DataBaseIdentityConstants.CREATE_DATE))&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;     &lt;/span&gt;conobj=DataBaseIdentityUtil.convertMapToConnectorObject(userProfile,DataBaseIdentityConstants.CREATE_DATE);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;else&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;     &lt;/span&gt;conobj=DataBaseIdentityUtil.convertMapToConnectorObject(userProfile);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;logger.ok(&quot;executeQuery Attributes Objects &amp;nbsp;&quot;+conobj.getAttributes());&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;handler.handle(conobj);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;logger.ok(&quot;executeQuery Attributes Objects &amp;nbsp;After &quot;+conobj.getAttributes());&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;logger.ok(&quot;executeQuery Ended&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;DataBaseIdentityUtil class&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public static ConnectorObject convertMapToConnectorObject(UserProfile userProfile,String updateFieldName)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConnectorObjectBuilder userObjBuilder = new ConnectorObjectBuilder();&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String status=userProfile.getStatus();&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!isEmpty(status) &amp;amp;&amp;amp; status.equalsIgnoreCase(DataBaseIdentityConstants.STATUS_ENABLED))&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; userObjBuilder.addAttribute(DataBaseIdentityConstants.STATUS,DataBaseIdentityConstants.STATUS_ENABLED);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; userObjBuilder.addAttribute(DataBaseIdentityConstants.STATUS,DataBaseIdentityConstants.STATUS_DISABLED ); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userObjBuilder.addAttribute(DataBaseIdentityConstants.FIRST_NAME,userProfile.getFirstName());&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userObjBuilder.addAttribute(DataBaseIdentityConstants.LAST_NAME,userProfile.getLastName());&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userObjBuilder.addAttribute(DataBaseIdentityConstants.MIDDLE_NAME,userProfile.getMiddleName());&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userObjBuilder.addAttribute(DataBaseIdentityConstants.USER_LOGIN,userProfile.getUserLogin());&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userObjBuilder.setUid(Long.toString(userProfile.getId()));&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userObjBuilder.setName(Long.toString(userProfile.getId()));&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(updateFieldName != null)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;if(updateFieldName.equalsIgnoreCase(&quot;updateDate&quot;))&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;if(userProfile.getUpdateDate() != null)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;userObjBuilder.addAttribute(updateFieldName,userProfile.getUpdateDate().getTime());&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;if (updateFieldName.equalsIgnoreCase(&quot;createDate&quot;))&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;if(userProfile.getCreateDate() != null)&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;userObjBuilder.addAttribute(updateFieldName,userProfile.getCreateDate().getTime());&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logger.ok(&quot;Final Object Data &quot;+userObjBuilder.toString());&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConnectorObject conobj=userObjBuilder.build();&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; logger.ok(&quot;Final Object Data &quot;+conobj.getAttributes());&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return conobj;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;6. Re-Deploy the ICF Jar&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;Build the Jar File&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Execute the following command to build and generate the dbconnector-demo-1.0.jar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
gradle build&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Deploy the Jar File&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. Login to the OIM Server.&lt;/div&gt;
&lt;div&gt;
2. Go to the DOMAIN_HOME/bin directory and execute source ./setDomainEnv.sh file. After executing the file , it will set the classpath.&lt;/div&gt;
&lt;div&gt;
3. Go to the OIM_HOME/server/bin directory an execute the&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
UploadJars.sh [-username &amp;lt;username&amp;gt;] [-password &amp;lt;password&amp;gt;] [-serverURL &amp;lt;t3://oimhostname:oimportno&amp;gt;] [-ctxFactory &amp;lt;weblogic.jndi.WLInitialContextFactory&amp;gt;] [- [-ICFBundle &amp;lt;Location of the ICF Bundle Jar&amp;gt;]&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It will deploy the ICFBundle into the OIM repository.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;7. Restart the OIM Server&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
Login to the OIM Server and go to the $DOMAIN_HOME/bin directory and execute the following files:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
./stopManagedWebLogic.sh oim_server1 t3://weblogicadminhost:port&lt;/div&gt;
&lt;div&gt;
./startManagedWebLogic.sh oim_server1 t3://weblogicadminhost:port&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
8. Re-Create the Schedule Task&lt;/h3&gt;
&lt;div&gt;
&lt;b&gt;Delete Schedule Task Name&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Login to the OIM Admin Console --&amp;gt; Advanced --&amp;gt; &amp;nbsp;System Management &amp;nbsp;--&amp;gt; Search Schedule Jobs --&amp;gt; Enter Schedule task job name.&lt;b&gt;&amp;nbsp;&lt;/b&gt;After Searching the job name, Select the Job Name in the list and Click X Icon . It will delete the Schedule Task Name&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Create the Schedule Task Name&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Login to the OIM Admin Console --&amp;gt; Advanced --&amp;gt; &amp;nbsp;System Management &amp;nbsp;--&amp;gt; Actions --&amp;gt; Create --&amp;gt; &amp;nbsp;Select Task Name from the Task List, Enter Schedule Job Name, Select &amp;nbsp;No Predefined Schedule for testing, later we can configure periodic, Enter Incremental Recon Date Attribute, IT Resource Name, Object Type, Latest Token, Resource Object Name, and Scheduled Task Name. The Job Name and Scheduled Task Name should be same because it will update the Latest Token value based on the Scheduled Task Name value. The example configuration is given below.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK78B-oq8JYQclx0cmzra6EkHd3iD52ZrTVkNha63KsbxSi_mx15NseH7o9qwtrZ6GJOkdimid_AyYK2w6l3Ia4AFzwI7gCUIysStQvCU9EqYwEKqp22BSUtG9RcaODf1uxDh9H7D3DATi/s1600/abc1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK78B-oq8JYQclx0cmzra6EkHd3iD52ZrTVkNha63KsbxSi_mx15NseH7o9qwtrZ6GJOkdimid_AyYK2w6l3Ia4AFzwI7gCUIysStQvCU9EqYwEKqp22BSUtG9RcaODf1uxDh9H7D3DATi/s1600/abc1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you specify the Filter and Incremental Recon Date Attribute in the configuration, It will search the user based on the filter and also incremental Recon Date Attribute. It will invoke the createGreathanExpression, createEqualExpression, and also createAndExpression.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://idmoim.blogspot.com/2014/07/incremental-reconciliation-for-database.html&quot;&gt;Incremental SyncRecon Task&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/6589711219246790961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/07/building-oim-metadata-for-data-base_24.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6589711219246790961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/6589711219246790961'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/07/building-oim-metadata-for-data-base_24.html' title='Building the OIM metadata for data base Incremental reconciliation icf connector '/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK78B-oq8JYQclx0cmzra6EkHd3iD52ZrTVkNha63KsbxSi_mx15NseH7o9qwtrZ6GJOkdimid_AyYK2w6l3Ia4AFzwI7gCUIysStQvCU9EqYwEKqp22BSUtG9RcaODf1uxDh9H7D3DATi/s72-c/abc1.jpeg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8081952238935480135.post-1990587505666778090</id><published>2014-07-24T10:58:00.001-07:00</published><updated>2014-07-24T10:58:59.127-07:00</updated><title type='text'>Incremental Reconciliation for Database ICF SynReconTask</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div&gt;
&lt;b&gt;Incremental Reconciliation for Database ICF SynReconTask&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;b&gt;1. Creating the Scheduler Task Metadata&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;lt;?xml version = &#39;1.0&#39; encoding = &#39;UTF-8&#39;?&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;xl-ddm-data version=&quot;2.0.1.0&quot; user=&quot;XELSYSADM&quot; database=&quot;jdbc:oracle:thin:@localhost:5524/estView.regress.rdbms.dev.us.oracle.com&quot; exported-date=&quot;1307546406635&quot; description=&quot;FF&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;scheduledTask repo-type=&quot;MDS&quot; name=&quot;DataBaseICFConnectorSyncReconciliation&quot; mds-path=&quot;/db&quot; mds-file=&quot;DataBaseICFConnectorSyncReconciliation.xml&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;completeXml&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;scheduledTasks xmlns=&quot;http://xmlns.oracle.com/oim/scheduler&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;task&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;DataBaseICFConnectorSyncReconciliation&amp;lt;/name&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;class&amp;gt;oracle.iam.connectors.icfcommon.recon.SyncReconTask&amp;lt;/class&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;description&amp;gt;DataBaseICFConnectorSyncReconciliation&amp;lt;/description&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;retry&amp;gt;0&amp;lt;/retry&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;parameters&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;IT Resource Name&quot;&amp;gt;IT Resource Name&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Object Type&quot;&amp;gt;Object Type&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Sync Token&quot;&amp;gt;Sync Token&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Resource Object Name&quot;&amp;gt;Resource Object Name&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;string-param required=&quot;false&quot; encrypted=&quot;false&quot; helpText=&quot;Scheduled Task Name&quot;&amp;gt;Scheduled Task Name&amp;lt;/string-param&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/parameters&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/task&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/scheduledTasks&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/completeXml&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;/scheduledTask&amp;gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;/xl-ddm-data&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;b&gt;2. Import Schedule Task Reconciliation Metadata&lt;/b&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Import the Schedule Task Reconciliation Metadata into the oim repository as follows:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Login to the OIM Console &amp;nbsp;--&amp;gt; Advance --&amp;gt; Import Deployment Manager File --&amp;gt; Select the Scheduler Task File &amp;nbsp;--&amp;gt; Add File --&amp;gt; Import. It will import the XMl File into the OIM Repository.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;b&gt;3. Restart the OIM Server&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
Login to the OIM Server and go to the $DOMAIN_HOME/bin directory and execute the following files:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
./stopManagedWebLogic.sh oim_server1 t3://weblogicadminhost:port&lt;/div&gt;
&lt;div&gt;
./startManagedWebLogic.sh oim_server1 t3://weblogicadminhost:port&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;font-weight: bold;&quot;&gt;
4. Create the Schedule Task&lt;/h3&gt;
&lt;div style=&quot;font-weight: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-weight: normal;&quot;&gt;
&lt;b&gt;Create the Schedule Task Name&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-weight: normal;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-weight: normal;&quot;&gt;
Login to the OIM Admin Console --&amp;gt; Advanced --&amp;gt; &amp;nbsp;System Management &amp;nbsp;--&amp;gt; Actions --&amp;gt; Create --&amp;gt; &amp;nbsp;Select Task Name from the Task List, Enter Schedule Job Name, Select &amp;nbsp;No Predefined Schedule for testing, later we can configure periodic, Enter &amp;nbsp;IT Resource Name, Object Type, Resource Object Name, and Scheduled Task Name. The Job Name and Scheduled Task Name should be same because it will update the Sync Token value based on the Scheduled Task Name value. The example configuration is given below.&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-weight: bold; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5qD3upr5QlJcy-o0G5fqVKQ7BFRJsaFKRWdwpJ28ZZIrqHVNmhtTnNlsW8BFXzFTrVzhUgybKAxd8vggPCSaRLw7rijCyfVqVvt7S2HtVk6yNrrfw-NbJjKk_534EtxSSrZjqYaZAGiD/s1600/abc1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5qD3upr5QlJcy-o0G5fqVKQ7BFRJsaFKRWdwpJ28ZZIrqHVNmhtTnNlsW8BFXzFTrVzhUgybKAxd8vggPCSaRLw7rijCyfVqVvt7S2HtVk6yNrrfw-NbJjKk_534EtxSSrZjqYaZAGiD/s1600/abc1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-weight: bold;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The Sync Token value updated after running the Schedule Task.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idmoim.blogspot.com/feeds/1990587505666778090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idmoim.blogspot.com/2014/07/incremental-reconciliation-for-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/1990587505666778090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8081952238935480135/posts/default/1990587505666778090'/><link rel='alternate' type='text/html' href='http://idmoim.blogspot.com/2014/07/incremental-reconciliation-for-database.html' title='Incremental Reconciliation for Database ICF SynReconTask'/><author><name>IDM OIM</name><uri>http://www.blogger.com/profile/07451316181647650347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5qD3upr5QlJcy-o0G5fqVKQ7BFRJsaFKRWdwpJ28ZZIrqHVNmhtTnNlsW8BFXzFTrVzhUgybKAxd8vggPCSaRLw7rijCyfVqVvt7S2HtVk6yNrrfw-NbJjKk_534EtxSSrZjqYaZAGiD/s72-c/abc1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>