<?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: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-8877983663810747567</id><updated>2012-02-10T10:03:18.675-05:00</updated><title type='text'>This and That</title><subtitle type='html'>Thoughts on Enterprise security, Cloud, *aaS, Software, Products and some tips on security in Fusion Middleware Security.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-4120755890611592727</id><published>2012-02-10T07:18:00.002-05:00</published><updated>2012-02-10T10:03:18.682-05:00</updated><title type='text'>There are clouds</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;When you look at the sky do you see &lt;b&gt;a&lt;/b&gt; cloud? I bet more often than not you see clouds. And this precisely is the problem with many of the cloud providers. They exist in isolation, and often do not help companies deploying to multiple clouds solve many problems (especially in the security area) effectively. &lt;/div&gt;&lt;div class="MsoNormal"&gt;Let’s take an example of a hypothetical XYZ Corporation. XYZ decides to leverage a few SaaS providers for its need in the area of Human Capital Management (HCM), Finance &amp;amp; Payroll, and Customer Relationship Management (CRM)-XYZ signs up with three different cloud based providers.&lt;/div&gt;&lt;div class="MsoNormal"&gt;All looks good on the surface, but there are problems.  &lt;/div&gt;&lt;div class="MsoNormal"&gt;Let take a walk down the triad of AAA (Authentication, Authorization, and Audit) issues with the above setup.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication: Where is the source of Identity hosted? Is it hosted at XYZ or is it hosted at a Cloud Provider?&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -0.25in;"&gt;How does the cloud provider trust an external source of Identity&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -0.25in;"&gt;How does XYX securely provide its users/employees/contractor to the hosted cloud provider and continue to keep its users in sync with the cloud provider.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;3.&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;       &lt;/span&gt;Since we are talking multiple SaaS providers, what if a user John Doe is represented in various ways in the SaaS provider’s identity store. Representation from jdoe, john.doe, and jodoe has all been in corporate LDAP for years. Now imagine trying to reconcile John Doe across SaaS providers.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Typically SaaS (Cloud) providers are not aware of other cloud providers and they can’t offer services that leverage other providers.&lt;/div&gt;&lt;div class="MsoNormal"&gt;For example if there was a business need to ensure the principle of “separation of duties” continued to be enforced when the John Doe is a user in HCM and Finance &amp;amp; Payroll offered by different vendors. How does one ensure that the HCM and Payroll system do not allow John Doe to both change his pay grade (an HCM function) and release payment (a Finance and Payroll feature ) on his expenses. &lt;/div&gt;&lt;div class="MsoNormal"&gt;The separation of clouds causes problems in Authorization and Audit too. For example how does one audit that John Doe did not access HCM function when a given CRM function was accessed.&lt;/div&gt;&lt;div class="MsoNormal"&gt;There are a few ways to solve this problem:&lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: 0px;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="text-indent: -0.25in;"&gt;If it hurts, don't it – don’t sign up with multiple cloud providers - just kidding.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -0.25in;"&gt;Put a level of indirection,  a service like apigee may help&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -0.25in;"&gt;Standardize – Cloud &lt;a href="http://standards.ieee.org/develop/project/2302.html"&gt;Interoperability &lt;/a&gt;standard under development and &lt;/span&gt;&lt;span style="text-indent: -0.25in;"&gt;JavaEE 7 will help, but a lot more is needed.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-indent: -0.25in;"&gt;Cloud vendors to externalize some of their data to allow third party reconciliation, audit, authorization checks etc.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="MsoNormal"&gt;This is a hard problem, none of the solutions are easy, without side effects, or will work for everyone. &lt;/div&gt;&lt;div class="MsoNormal"&gt;Do you face this problem? What are other ways to address this issue? Is there any effort to address this issue?&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-4120755890611592727?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/4120755890611592727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=4120755890611592727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4120755890611592727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4120755890611592727'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2012/02/there-are-clouds.html' title='There are clouds'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-4754691774286822836</id><published>2012-02-08T12:15:00.003-05:00</published><updated>2012-02-08T14:18:01.627-05:00</updated><title type='text'>Why Facebook's hacker way will change</title><content type='html'>&lt;a href="http://www.msnbc.msn.com/id/46263927/ns/technology_and_science-tech_and_gadgets/t/facebook-hacker-way-way-life/"&gt;http://www.msnbc.msn.com/id/46263927/ns/technology_and_science-tech_and_gadgets/t/facebook-hacker-way-way-life/&lt;/a&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My take on this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hacking and moving fast is to facebook's advantage right now-no doubt. Hacking is ok, when there is little legacy code. Most interaction with FB services today is by humans, who are smart     enough to deal with changes when the web interface changes.&lt;br /&gt; &lt;br /&gt;   As more machines(programs/automation) interact with FB and as it     matures, FB will face the same inevitable slow down that other once     fast growing companies have faced.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Comments, thoughts welcome.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-4754691774286822836?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/4754691774286822836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=4754691774286822836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4754691774286822836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4754691774286822836'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2012/02/why-facebooks-hacker-way-will-change.html' title='Why Facebook&apos;s hacker way will change'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-8250932293246864965</id><published>2011-11-01T20:47:00.004-04:00</published><updated>2011-11-01T20:55:10.405-04:00</updated><title type='text'>Getting ready for Java development on Ubuntu</title><content type='html'>It has been a while since I coded in Java. Now that I am getting back in to the thick of it, I thought to use Ubuntu distribution of Linux. Turns out with 11.10 version (and probably earlier) it does not support Sun/Oracle JDK and the default package manager only installs Open JDK. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All of this wouldn't be an issue if I didn't eed IntelliJ Idea as my IDE. IntelliJ prints an ugly warning that Open JDK isn't supported. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On Oracle's java website they don't provide a deb package for Ubuntu.  I wasn't successful converting deb to rpm. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Turns out installing  binary (bin) jdk on Ubuntu works like a charm and Intelli Idea is happy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now it is my turn to be a happy java developer again. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-8250932293246864965?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/8250932293246864965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=8250932293246864965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8250932293246864965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8250932293246864965'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2011/11/getting-ready-for-java-development-on.html' title='Getting ready for Java development on Ubuntu'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-5956554852738150424</id><published>2011-05-24T11:59:00.002-04:00</published><updated>2011-05-24T12:01:31.264-04:00</updated><title type='text'>SSL Debugging in WebLogic</title><content type='html'>It has been a while since I posted anything here. While I come up with something new to write, here is &lt;a href="http://blogs.oracle.com/WebLogicServer/entry/ssl_troubleshooting_and_debugg"&gt;post&lt;/a&gt; that will give you insight on the topic. Thanks to my friend Larry for the post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-5956554852738150424?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/5956554852738150424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=5956554852738150424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5956554852738150424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5956554852738150424'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2011/05/ssl-debugging-in-weblogic.html' title='SSL Debugging in WebLogic'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7075647861796836046</id><published>2010-09-21T14:10:00.002-04:00</published><updated>2010-09-21T14:14:40.125-04:00</updated><title type='text'>Service Oriented Security 101 at Oracle Develop</title><content type='html'>Come hear about our vision of Service &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;oriented&lt;/span&gt; security and how &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;OPSS&lt;/span&gt; is being used  at Oracle. Looks like my session is one of the last sessions of this years &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;OOW&lt;/span&gt;, so if you still hanging out, stop by Thursday 23&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;th&lt;/span&gt;, 3:30 pm at Hotel &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Nikko&lt;/span&gt; Ballroom III&lt;br /&gt;&lt;br /&gt;See more security sessions at this &lt;a href="#%20www.oracle.com/us/openworld/oow10-focuson-security-165794.pdf"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7075647861796836046?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7075647861796836046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7075647861796836046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7075647861796836046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7075647861796836046'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2010/09/service-oriented-security-101-at-oracle.html' title='Service Oriented Security 101 at Oracle Develop'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7704116612589278964</id><published>2010-04-26T20:49:00.004-04:00</published><updated>2010-04-26T20:55:54.535-04:00</updated><title type='text'>Security Vs Identity Services</title><content type='html'>Often I hear these terms used interchangeably. I see them differently. Security services provide the basic building blocks like crypto, hashing etc. Identity Services provide stuff like Enterprise SSO, Audit, Authorization etc. While in Java language there is an admirable collection of APIs/libraries for Security, identity services don't have much.&lt;br /&gt;&lt;br /&gt;What do you think? Do you make this distinction?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7704116612589278964?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7704116612589278964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7704116612589278964' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7704116612589278964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7704116612589278964'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2010/04/security-vs-identity-services.html' title='Security Vs Identity Services'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7528258040364599872</id><published>2010-03-22T11:54:00.005-04:00</published><updated>2010-03-22T11:58:48.589-04:00</updated><title type='text'>OPSS podcast - Service Oriented Security</title><content type='html'>While I give you many tips and tricks on this blog, hear Rohit Gupta's &lt;a href="http://streaming.oracle.com/ebn/podcasts/media/8446401_Rohit_Gupta_031610.mp3"&gt;podcast&lt;/a&gt; to learn the vision behind OPSS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7528258040364599872?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7528258040364599872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7528258040364599872' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7528258040364599872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7528258040364599872'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2010/03/hear-opss-poscast-service-oriented.html' title='OPSS podcast - Service Oriented Security'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-5540651395864999884</id><published>2010-03-17T18:13:00.004-04:00</published><updated>2010-03-22T11:54:21.346-04:00</updated><title type='text'>OPSS Scripts for Programmatic Policy Mgmt.</title><content type='html'>In the last post I gave example of WLST command necessary to grant code source permission to an application that will allow the application to use OPSS policy management API to modify the policy.&lt;br /&gt;&lt;br /&gt;Here are more details.&lt;br /&gt;&lt;br /&gt;I am using JDev build Build JDEVADF_11.1.1.2.0_GENERIC_091029.2229.5536.&lt;br /&gt;The JDev is installed at the default location on my windows machine. Ran wlst command at C:\Oracle\Middleware\oracle_common\common\bin&gt;wlst.cmd&lt;br /&gt;&lt;br /&gt;In the WLST shell type&lt;br /&gt;grantPermission(codeBaseURL="&lt;span style="font-weight: bold;"&gt;file:///C:/Documents and Settings/vishukla/Application Data/JDeveloper/system11.1.1.2.36.55.36/o.j2ee/drs/PolicySource/-&lt;/span&gt;", permClass="oracle.security.jps.service.policystore.PolicyStoreAccessPermission", permTarget="context=APPLICATION,name=&lt;span style="font-weight: bold;"&gt;PolicySource#V2.0&lt;/span&gt;", permActions=&lt;span style="font-weight: bold;"&gt;"*"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. The  first bold entry is the exploded path where the application is during application development.&lt;br /&gt;2. The second bold entry is the application stripe which by default is applicationame+"#"+"application version". By some quirk, each application version in JDev starts its counter at 2.&lt;br /&gt;3. The third bold entry is the action, in this case I have a wild card to indicate all actions on the policy. However, in any non trivial environment you should use specific actions like "alterAppRole" as specified in the API javadoc.&lt;br /&gt;&lt;br /&gt;Here are the command line output&lt;br /&gt;&lt;br /&gt;wls:/DefaultDomain/serverConfig&gt; grantPermission(codeBaseURL="file:///C:/Documen&lt;br /&gt;ts and Settings/vishukla/Application Data/JDeveloper/system11.1.1.2.36.55.36/o.j&lt;br /&gt;2ee/drs/PolicySource/-", permClass="oracle.security.jps.service.policystore.Poli&lt;br /&gt;cyStoreAccessPermission", permTarget="context=APPLICATION,name=PolicySource#V2.0&lt;br /&gt;", permActions="*")&lt;br /&gt;{appStripe=null, permActions=*, principalName=null, permClass=oracle.security.jp&lt;br /&gt;s.service.policystore.PolicyStoreAccessPermission, principalClass=null, permTarg&lt;br /&gt;et=context=APPLICATION,name=PolicySource#V2.0, codeBaseURL=file:///C:/Documents&lt;br /&gt;and Settings/vishukla/Application Data/JDeveloper/system11.1.1.2.36.55.36/o.j2ee&lt;br /&gt;/drs/PolicySource/-}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-5540651395864999884?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/5540651395864999884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=5540651395864999884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5540651395864999884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5540651395864999884'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2010/03/ok-more-details-here.html' title='OPSS Scripts for Programmatic Policy Mgmt.'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-4409711883725995662</id><published>2010-03-08T15:30:00.009-05:00</published><updated>2010-03-17T11:27:39.633-04:00</updated><title type='text'>Programmatic Authorization Policy Mangament with OPSS</title><content type='html'>In the simplistic cases, often the authorization policy management is done using the provided tooling. OPSS provided tooling in the form of EM(GUI) and WLST (script) to manage policy.&lt;br /&gt;&lt;br /&gt;For more advanced needs, OPSS also provides API for programmatic policy management.The Policy API is protected by codesource permission. Hence applications using the API will need to have the required permission.  See the example 18.3.4.2  in &lt;a href="http://download.oracle.com/docs/cd/E15523_01/core.1111/e10043/devauthoriz.htm#CHDDIIFC"&gt;FMW Security guide&lt;/a&gt; on the code necessary to use the API.  What the example assumes is that proper policy access permission is granted before hand. I.e the application code running the example has PolicyStoreAccessPermission( "context=APPLICATION,name=&lt;span style="font-weight: bold;"&gt;applicationStripe&lt;/span&gt;"  , "grant")&lt;br /&gt;&lt;br /&gt;Here is the example of OPSS WLST command that needs to be run to grant the requirement Permission. Replace all bold entries  with values appropriate for your environment. The first entry is the path to the application jar that is making the programmatic API call, the second bold entry is the application stripe.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;grantPermission -codeBaseURL "&lt;span style="font-weight: bold;"&gt;file:/scratch/foo/abc.jar&lt;/span&gt;" -permClass  oracle.security.jps.service.policystore.PolicyStoreAccessPermission -permTarget "context=APPLICATION,name=&lt;span style="font-weight: bold;"&gt;myAppName&lt;/span&gt;" -permActions "grant"&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://download.oracle.com/docs/cd/E15523_01/web.1111/e13813/reference.htm#WLSTC120"&gt;this&lt;/a&gt; link for details on running FMW WLST commands.&lt;br /&gt;&lt;br /&gt;There are two basic ways an application can use the example 18.3.4.2. One is to modify the application policy for itself, the other is to modify the application policy for another application.&lt;br /&gt;The later might be the case when you have authorization management of the application structured as another application.  In the second case, the code source for the second application needs to be granted the PolicyStoreAccess permission.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-4409711883725995662?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/4409711883725995662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=4409711883725995662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4409711883725995662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4409711883725995662'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2010/03/authorization-policy-mangament.html' title='Programmatic Authorization Policy Mangament with OPSS'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7181964450541969355</id><published>2009-11-13T16:30:00.007-05:00</published><updated>2010-02-03T18:09:52.708-05:00</updated><title type='text'>Fixed - eZShare app and Infinite loop in the browser</title><content type='html'>With the latest version of the &lt;a href="http://www.oracle.com/technology/products/id_mgmt/opss/samples/ezshare.zip"&gt;App&lt;/a&gt;, this issue is fixed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;If you run into an infinite loop running eZShare sample app with JDev 11.1.1.2.0, a workaround  is to remove the AdfFacesFilter from your app's web.xml.&lt;br /&gt;&lt;br /&gt;ie. remove the following&lt;br /&gt;&lt;br /&gt;AdfFacesFilter &amp;amp; the Filter mapping for it.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7181964450541969355?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7181964450541969355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7181964450541969355' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7181964450541969355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7181964450541969355'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/11/ezshare-app-and-infinite-loop-in.html' title='Fixed - eZShare app and Infinite loop in the browser'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3831373526789640793</id><published>2009-08-21T09:58:00.002-04:00</published><updated>2009-08-21T10:07:40.878-04:00</updated><title type='text'>JDev 11gR1 &amp; WebLogic</title><content type='html'>Did you know JDev 11gR1 embeds WLS 11gR1 (10.3.1) . When you develop an application in JDev and run it, JDev deploys the application automatically in the embedded WLS and launches the application's start page.&lt;br /&gt;&lt;br /&gt;A less obvious fact is that this embedded WLS also comes with WLS Admin Console that is accessible from http://localhost:7101/console with weblogic/weblogic1 as the administrative account.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3831373526789640793?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3831373526789640793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3831373526789640793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3831373526789640793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3831373526789640793'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/08/jdev-11gr1-weblogic.html' title='JDev 11gR1 &amp; WebLogic'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7895593184858504343</id><published>2009-08-14T11:49:00.003-04:00</published><updated>2009-08-14T11:56:27.243-04:00</updated><title type='text'>Deleting Application Policies with WLST</title><content type='html'>OPSS can automatically delete application policies when the application is undeployed. This is controlled by flags I talked about in my previous posts.&lt;br /&gt;&lt;br /&gt;Now there are occasions where you might want to delete application policies manually. Here is a WLST command sample.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Launch WLST command as  &lt;oracle&gt;/common/bin/wlst.sh&lt;/li&gt;&lt;li&gt;Connect to Admins server, connect('weblogic','welcome1',"localhost:7001")&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample Output &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Connecting to t3://localhost:7001 with userid weblogic ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; Successfully connected to Admin Server 'AdminServer' that belongs to domain 'domain1'.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-family: courier new;"&gt; Warning: An insecure protocol was used to connect to the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; server. To ensure on-the-wire security, the SSL port or &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; Admin port should be used instead.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Delete the authZ policy for a an application, deleteAppPolicies(appStripe="TB#V1.0#9")&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample Output&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: courier new;"&gt;wls:/domain1/serverConfig&gt; deleteAppPolicies(appStripe="TB#V1.0#9")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{appStripe=TB#V1.0#9}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;For more help, use help(domainRuntime)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note the application stripe is a fully qualified name and include the application + the version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7895593184858504343?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7895593184858504343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7895593184858504343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7895593184858504343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7895593184858504343'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/08/deleting-application-policies-with-wlst.html' title='Deleting Application Policies with WLST'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-8917185770863340795</id><published>2009-08-07T14:35:00.005-04:00</published><updated>2009-08-14T13:40:32.534-04:00</updated><title type='text'>Application policy and App un-deployment</title><content type='html'>You can deploy an ADF  application with EM to a WebLogicServer Domain.  Lets say the ADF app is secured. When the app is deployed, the security policies are also deployed with the app to the the target server. This happens automatically within JDeveloper. But when the app is deployed to a remote WLS this is exposed as configuration choice that the application deployer (Administrator by another name) will have to make.&lt;br /&gt;&lt;br /&gt;This is controlled with the flags I blogged in my last post.&lt;br /&gt;&lt;br /&gt;What about undeploying application security policies, when the corresponding application is undeployed. Turns out this does not happen automatically in 11gR1, and requires the application to be packaged(EAR file) with an &lt;span style="font-weight: bold;"&gt;"Weblogic-Application-Version"&lt;/span&gt; entry in its manifest file.&lt;br /&gt;&lt;br /&gt;JDev automatically creates a MANIFEST file for the application when the application is packaged(deploy to an EAR).  Here is an example manifest file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Manifest-Version: 1.0&lt;br /&gt;Created-By: 1.6.0_07 (Sun Microsystems Inc.)&lt;br /&gt;Weblogic-Application-Version: V1.0&lt;br /&gt;&lt;br /&gt;When this app is un-deployed its application policies are automatically removed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-8917185770863340795?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/8917185770863340795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=8917185770863340795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8917185770863340795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8917185770863340795'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/08/needle-in-haystack-what-you-want-to.html' title='Application policy and App un-deployment'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-5717270032236665921</id><published>2009-08-07T13:29:00.005-04:00</published><updated>2009-08-14T11:59:57.127-04:00</updated><title type='text'>Deploying a Secure application wiht EM</title><content type='html'>As a reader of this blog, you probably know that Oracle Platform Security Services (OPSS) supports application life cycle from design, to deployment to monitoring etc. Now the security configuration management  is exposed through Enterprise Manager - Fusion Middleware Control(names ,names, when will we use shorter names, but let me not get off track). It allows administrator to control how security related artifacts (policies, credentials etc) are deployed to the target server.&lt;br /&gt;&lt;br /&gt;The feature is documented in the Oracle Fusion Middleware &lt;a href="http://download.oracle.com/docs/cd/E12839_01/core.1111/e10043/addlsecfea.htm#CFHFAIGE"&gt;Security guide&lt;/a&gt; (section 7.2.1) but the doc is somewhat awkward. I recently has some email exchange with a customer about this, and I thought while we improve the doc, the clarification might  be of  interest to others.&lt;br /&gt;&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;The following three application security artifacts are of interest  during application deployment process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Identities - Which mean users and groups and application roles to groups/users mapping. These are defined by a Developer during application development process within JDev.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In most scenarios, the identities should not be migrated when deploying an application to a remote WLS (it is controlled with the check box, )&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Mapping Application role to enterprise groups/users in a remote WLS environment is a post application deployment task to be done by an Administrator.&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Policies  - Which include Application roles and permissions granted to application roles.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;When deploying the app for the first time, the policies should always be migrated to the Policy store, which is the option controlled by "Append" radio button&lt;/li&gt;&lt;li&gt;Upon re-deploying the app, to preserve any application policy modification made in the policy store, the admin should choose the "Ignore" radio button.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Credentials - Which are username/password tuples used by the applications&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The radio button "Append" means credentials packaged with the application will be deployed to the remote WLS's credential store. In case a credential with the same map and key names already exists in the domain credential store, the migration process will skip that credential, and continue with others.&lt;/li&gt;&lt;li&gt;The radio button "Ignore" means credentials packaged with the application will not be deployed to the remote WLS's credential store. In this case, the administrator is then expected to create a credential valid for the environment, before the application works as designed by the developer."&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;Shout out to my colleague Sam for reviewing this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-5717270032236665921?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/5717270032236665921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=5717270032236665921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5717270032236665921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5717270032236665921'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/08/deploying-secure-application-wiht-em.html' title='Deploying a Secure application wiht EM'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3077441533693284900</id><published>2009-07-17T17:29:00.004-04:00</published><updated>2009-07-17T17:37:05.024-04:00</updated><title type='text'>Upgrade to Fusion Middleware 11gR1</title><content type='html'>So you are on OAS 10.1.x release and want to upgrade to 11gR1. It is a daunting topic, for starters here is the &lt;a href="http://www.oracle.com/technology/products/middleware/upgrade/index.html"&gt;upgrade center&lt;/a&gt;.  For upgrading custom JavaEE application upgrade see this &lt;a href="http://www.oracle.com/technology/products/middleware/upgrade/pdf/11GR1_JEE_UPGRADE.pdf"&gt;whitepaper &lt;/a&gt;which incidentally I co-wrote.&lt;br /&gt;&lt;br /&gt;Let me know if you run into any problems (specifically wrt to Security) during upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3077441533693284900?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3077441533693284900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3077441533693284900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3077441533693284900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3077441533693284900'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/07/upgrade-to-fusion-middleware-11gr1.html' title='Upgrade to Fusion Middleware 11gR1'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3409399302377511664</id><published>2009-07-16T10:46:00.003-04:00</published><updated>2009-07-16T10:48:01.701-04:00</updated><title type='text'>In case you are wondering what I am upto in October</title><content type='html'>Come check out the Oracle Open World sessions on &lt;a href="http://www35.cplan.com/cc221_new/newCatalog.jsp?ilc=221-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;icriteria2=&amp;amp;search_sessions=yes&amp;amp;icriteria1=+&amp;amp;icriteria8=vinay+shukla&amp;amp;openTagSearch=&amp;amp;icriteria6=&amp;amp;icriteria3=+&amp;amp;icriteria4=+&amp;amp;icriteria7=&amp;amp;search_advance=yes&amp;amp;horizontal1=20"&gt;OPSS&lt;/a&gt;.  I hope we get a chance to exchange some ideas after all that's what this Open World is all about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3409399302377511664?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3409399302377511664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3409399302377511664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3409399302377511664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3409399302377511664'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/07/in-case-you-are-wondering-what-i-am.html' title='In case you are wondering what I am upto in October'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3812054864270719321</id><published>2009-07-15T11:45:00.004-04:00</published><updated>2009-07-21T16:54:11.172-04:00</updated><title type='text'>Whats in your wallet?</title><content type='html'>Ok, behind the clever title (which has been used before in Oracle internal wiki &amp;amp; no relation to Capital One) here is the situation.  Often applications access some protected service (WebService, Database, LDAP etc). Many applications store user name/password(Credentials) required to authenticate to these services in some configuration file. Often these credentials are stored in a clear text where they are susceptible to prying eyes, and raise a few eyebrows at the corporate security groups.&lt;br /&gt;&lt;br /&gt;Business developers need a place to store these credentials securely and a guarantee that only authorized applications/users can access these.&lt;br /&gt;Enter &lt;a href="http://www.oracle.com/technology/products/id_mgmt/opss/index.html"&gt;OPSS&lt;/a&gt;'s  Credential Store Framework(CSF).  CSF allows only authorized applications to access credentials that are stored outside of the application, securely in Oracle Wallet (hence What's in your wallet, title). Nice, so developers don't need to worry about secure credentials storage themselves.&lt;br /&gt;&lt;br /&gt;But wait, here is the icing on the cake, since the credentials are stored outside the application, administrators can change/update the credentials without changing any application code using the Management tool Oracle Fusion Middleware provides (Enterprise Manager &amp;amp; WLST command).&lt;br /&gt;&lt;br /&gt;But wait, there is more,  OPSS allows provides build in auditing so if your admin want they can enable audit policy on Credential Store access without any application code changes but again few clicks with the aforementioned management tools.&lt;br /&gt;&lt;br /&gt;But wait, there is more, OPSS allows these credentials to be stored in an LDAP (and protected by an LDAP), which is what we recommend in a production situation instead of Oracle wallet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check out CSF &lt;a href="http://download.oracle.com/docs/cd/E12839_01/core.1111/e10043/devcsf.htm#BABEADIA"&gt;documentation&lt;/a&gt;,&lt;br /&gt;&lt;br /&gt;Happy coding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3812054864270719321?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3812054864270719321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3812054864270719321' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3812054864270719321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3812054864270719321'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/07/whats-in-your-wallet.html' title='Whats in your wallet?'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3225008590603069293</id><published>2009-07-06T11:11:00.002-04:00</published><updated>2009-07-06T11:17:16.483-04:00</updated><title type='text'>The foundation for security in Oracle Fusion Middleware and Fusion Applications</title><content type='html'>Now that Oracle has &lt;a href="http://finance.yahoo.com/news/Oracle-Unveils-First-Phase-of-prnews-3425244025.html?x=0&amp;amp;.v=1"&gt;released&lt;/a&gt; Fusion Middleware 11gR1, I can talk about security aspects of it. Starting this release Oracle has combined the security frameworks used in Oracle Application Server with the security framework used in WebLogic Server into "Oracle Platform Security Services" or OPSS.&lt;br /&gt;&lt;br /&gt;OPSS is the foundation of security used across the entire Fusion Middleware Suite and Fusion Applications. See &lt;a href="http://www.oracle.com/technology/products/id_mgmt/opss/index.html"&gt;details&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3225008590603069293?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3225008590603069293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3225008590603069293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3225008590603069293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3225008590603069293'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/07/foundation-for-security-in-oracle.html' title='The foundation for security in Oracle Fusion Middleware and Fusion Applications'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-6430298940618918400</id><published>2009-02-11T21:34:00.002-05:00</published><updated>2009-02-11T21:39:01.928-05:00</updated><title type='text'>Going back to dark ages</title><content type='html'>After coding in Java for over a decade, half of that with IntelliJ I am now trying to code Objective-C in Xcode. As with learning to use any new IDE this is not a fun exercise and I am constantly comparing Xcode to IntelliJ &amp;amp; so far there is only one winner. I can only find only a few built-in refactorings in Xcode. Does Xcode has anything like plugins? Is there a better tool for refactoring Objective-C?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-6430298940618918400?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/6430298940618918400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=6430298940618918400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/6430298940618918400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/6430298940618918400'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/02/going-back-to-dark-ages.html' title='Going back to dark ages'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-6743381331648720252</id><published>2009-02-04T13:10:00.003-05:00</published><updated>2009-02-04T13:14:09.105-05:00</updated><title type='text'>getting the current Subject  in oc4j</title><content type='html'>This is a copy of an email I sent.&lt;br /&gt;&lt;br /&gt;The problem: How do you get the subject associated with the currently authenticated user.&lt;br /&gt;&lt;br /&gt;Solution: There are two ways in oc4j.&lt;br /&gt;&lt;br /&gt;    * The standard way&lt;br /&gt;&lt;br /&gt;http://download.oracle.com/docs/cd/E12524_01/web.1013/e12514/authoriz.htm#CHDDAFBF&lt;br /&gt;&lt;br /&gt;1. Configure JAAS mode and&lt;br /&gt;2. invoke Subject.getSubject(AccessController.getContext());&lt;br /&gt;&lt;br /&gt;    * OC4J proprietary way&lt;br /&gt;&lt;br /&gt;Invoke oracle.oc4j.security.Security.getSubject()&lt;br /&gt;&lt;br /&gt;This requires an oc4j patchset in 10.1.3.3 and is automatically available in 10.1.3.4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-6743381331648720252?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/6743381331648720252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=6743381331648720252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/6743381331648720252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/6743381331648720252'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/02/getting-current-subject-in-oc4j.html' title='getting the current Subject  in oc4j'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-2782309267893199836</id><published>2009-01-27T12:14:00.004-05:00</published><updated>2009-01-27T12:22:56.724-05:00</updated><title type='text'>iPhone SDK not on Windows :-(</title><content type='html'>I was quite surprised to find that iPhone SDK is not available on Windows. Arghh. Lately I am seeing double standards in EU hunting Mr. Softie. What is the big deal that MS bundles IE on its OS. Folks who need another Browser can download any of the freely available browser. The fact that you can't uninstall IE does not get in my way of using a browser of my choice.&lt;br /&gt;But that i can't replace the battery on my iPhone/iPod is a blocking issue when the batteries die. I don't want to be held hostage by the battery maker.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-2782309267893199836?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/2782309267893199836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=2782309267893199836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/2782309267893199836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/2782309267893199836'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/01/iphone-sdk-not-on-windows.html' title='iPhone SDK not on Windows :-('/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7851664120596580010</id><published>2009-01-26T14:11:00.003-05:00</published><updated>2009-01-26T14:18:11.309-05:00</updated><title type='text'>N-Tier Security Silos</title><content type='html'>With the N-tier architecture the person managing the tiers tend to be separate and have separate skills sets. It often leads to knowledge silos and is especially visible when it comes to security. E.g it will be hard pressed to get a DBA who is good at securing Apache http Server. I wonder if there is a need for a security platform that helps to bridge this gap. An example could be that MidTier is more aware of security configured at the Data Tier and mid tier can take advantage of security at Data tier.&lt;br /&gt;I wonder if this is an issue for you? How have you dealt with this?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7851664120596580010?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7851664120596580010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7851664120596580010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7851664120596580010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7851664120596580010'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/01/n-tier-security-silos.html' title='N-Tier Security Silos'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-5248494865384801199</id><published>2009-01-06T15:21:00.003-05:00</published><updated>2009-01-06T15:27:56.406-05:00</updated><title type='text'>SSL between MidTier &amp; DataBase</title><content type='html'>Essentially the SSL support between an app server (MT) &amp; Datatier(Database) depends on two things.&lt;br /&gt;1. If the Databases support SSL (Oracle DB support this)&lt;br /&gt;2. The DB driver support this (could be thin or a thick client)&lt;br /&gt;&lt;br /&gt;Assuming OC4J is connecting to Oracle DB (which is configured to listen in SSL) here are the steps using Oracle JDBC thin driver.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt; For OracleAS, you could config SSL as the connection pool  &lt;br /&gt; properties, for example:&lt;br /&gt; &lt;managed-data-source&lt;br /&gt;  connection-pool-name="scottConnPoolTCPS"&lt;br /&gt;  jndi-name="jdbc/sslDS"&lt;br /&gt;  name="jdbc/sslDS"/&lt;br /&gt;&lt;br /&gt;   &lt;connection-pool name="scottConnPoolTCPS"&lt;br /&gt;      &lt;connection-factory&lt;br /&gt;        factory-class="oracle.jdbc.driver.OracleDriver"&lt;br /&gt;        user="scott"&lt;br /&gt;        password="tiger"&lt;br /&gt;&lt;br /&gt; url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps) &lt;br /&gt; (HOST=sracanov-a&lt;br /&gt; u2.au.oracle.com)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=orcl)))"&lt;br /&gt; commit-record-table-name=""&lt;br /&gt;         &lt;property name="truststore"&lt;br /&gt; value="/somepath/Wallets/client/ &lt;br /&gt; ewallet.p12"/&lt;br /&gt;         &lt;property name="truststore-password" value="welcome2"/&lt;br /&gt;         &lt;property name="truststore-type" value="PKCS12"/&lt;br /&gt;         &lt;property name="oracle.net.ssl_cipher_suites"&lt;br /&gt; value="SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,&lt;br /&gt; SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA"/&lt;br /&gt;      &lt;/connection-factory&lt;br /&gt;   &lt;/connection-pool&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WLS to Oracle DB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; For WLS, I don't see any doc for this type configuration. I don't  &lt;br /&gt; think it could be configured as the connection pool preperty.&lt;br /&gt; However, these might work:&lt;br /&gt;&lt;br /&gt; 1) Specify the property in the java program as the following example:&lt;br /&gt; //import packages&lt;br /&gt; import java.sql.*;&lt;br /&gt; import oracle.jdbc.*;&lt;br /&gt; import oracle.jdbc.pool.OracleDataSource;&lt;br /&gt;&lt;br /&gt; //specify the properties object&lt;br /&gt; java.util.Properties info = new java.util.Properties();&lt;br /&gt; ...&lt;br /&gt; // Set the SSL version&lt;br /&gt; info.put ("oracle.net.ssl_version","3.0");&lt;br /&gt;&lt;br /&gt; // Set the wallet location&lt;br /&gt; info.put ("oracle.net.wallet_location", "(SOURCE=(METHOD=file) &lt;br /&gt; (METHOD_DATA=(DIRECTORY=directory)))");&lt;br /&gt;&lt;br /&gt; // Set the cipher suite&lt;br /&gt; info. &lt;br /&gt; put("oracle.net.ssl_cipher_suites","SSL_DH_DSS_WITH_DES_CBC_SHA");&lt;br /&gt;&lt;br /&gt; // Force dn to match service name&lt;br /&gt; info.put("oracle.net.ssl_serevr_dn_match","TRUE");&lt;br /&gt;&lt;br /&gt; 2) Using WLS SSL protocal, like submitting Context.SECURITY_PROTOCOL  &lt;br /&gt; = "ssl" along with in getting the JNDI initial context.&lt;br /&gt; Copying Steve and Dave, they may have more infor on this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Frances Zhao for this information &amp; let me know of your experience with this information. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-5248494865384801199?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/5248494865384801199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=5248494865384801199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5248494865384801199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5248494865384801199'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2009/01/ssl-between-midtier-database.html' title='SSL between MidTier &amp; DataBase'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-8553364445066711204</id><published>2008-10-24T12:29:00.001-04:00</published><updated>2008-10-31T17:49:04.564-04:00</updated><title type='text'>Foundation for Security in Oracle Fusion Middleware:Oracle Platform Security Services</title><content type='html'>&lt;a href="http://www.oracle.com/wocportal/page/wocprod/ver-DRAFT/ocom/technology/products/id_mgmt/opss/OOW-SF08-S299261-OPSS.pdf"&gt;Here&lt;/a&gt; is my presentation from Oracle Open World 08 on OPSS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-8553364445066711204?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/8553364445066711204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=8553364445066711204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8553364445066711204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8553364445066711204'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/10/foundation-for-security-in-oracle.html' title='Foundation for Security in Oracle Fusion Middleware:Oracle Platform Security Services'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-5568445827631423681</id><published>2008-09-23T19:46:00.002-04:00</published><updated>2008-09-23T19:49:25.333-04:00</updated><title type='text'>Oracle Platform Security Services</title><content type='html'>As some of you know I am the product manager for this security framework. Come see the &lt;a href="http://www.oracle.com/technology/products/id_mgmt/opss/index.html"&gt;official OPSS  page&lt;/a&gt; at the OTN &amp; attend the OPSS session at the OOW 08.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-5568445827631423681?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/5568445827631423681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=5568445827631423681' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5568445827631423681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/5568445827631423681'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/09/oracle-platform-security-services.html' title='Oracle Platform Security Services'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7475038737630120414</id><published>2008-09-17T14:37:00.003-04:00</published><updated>2008-09-17T14:47:29.347-04:00</updated><title type='text'>Session at Oracle Open World 2008</title><content type='html'>The theme for this year's Open World is Your.Open.World. I am presenting &lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;ilg=english&amp;isort_sessions=&amp;isort_demos=&amp;isort_exhibitors=&amp;is=yes&amp;ip=%3C%2Fipresentations%3E&amp;isort_sessions_type=&amp;isort_exhibitors_type=&amp;isort_demos_type=&amp;search_sessions=yes&amp;icriteria1=MIDDLEWARE&amp;icriteria2=+&amp;icriteria5=+&amp;icriteria8=vinay+shukla&amp;icriteria9=+&amp;icriteria6=&amp;icriteria3=+&amp;icriteria7="&gt;a session&lt;/a&gt; on Oracle Platform Security Services (OPSS). The session in titled "Foundation for Security in Oracle Fusion Middleware: Oracle Platform Security Services" on Wednesday  09/24/2008 at 17:00 - 18:00 in Marriott Golden Gate C3. Please join the session to talk about security foundation for  Oracle Fusion Middleware. See you at OOW 08.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7475038737630120414?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7475038737630120414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7475038737630120414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7475038737630120414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7475038737630120414'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/09/session-at-oracle-open-world-2008.html' title='Session at Oracle Open World 2008'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-6538479606674254519</id><published>2008-08-14T15:38:00.003-04:00</published><updated>2008-08-21T14:15:09.946-04:00</updated><title type='text'>JAAS authentication integration with Containers</title><content type='html'>Often developers write custom jaas login modules. Upon successful authentication the loginContext.getSubject API returns an authenticated subject. LoginModule doesn't automatically make the JavaEE container aware of this subject. So if you need to invoke isUserInRole or IsCallerInRole API and have it evaluate based on the subject created by the loginContext you will need to assert the subject into the container which basically means having the subject associated with the current thread serving the request. Once you do that your programmatic login is integrated with the container. On oc4j the api to do this is &lt;a href="http://download.oracle.com/docs/cd/E12524_01/web.1013/e12514/authoriz.htm#BABHJJCJ"&gt;Security.setSubject&lt;/a&gt; and on WLS the equivalent is &lt;a href="http://egeneration.beasys.com/wls/docs100/security/fat_client.html#wp1051366"&gt;Security.RunAs&lt;/a&gt; which takes in a subject and a privileged action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-6538479606674254519?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/6538479606674254519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=6538479606674254519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/6538479606674254519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/6538479606674254519'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/08/jaas-authentication-integration-with.html' title='JAAS authentication integration with Containers'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-7417409023490745656</id><published>2008-04-15T11:30:00.004-04:00</published><updated>2008-04-15T12:42:35.607-04:00</updated><title type='text'>NTLM support in Oracle HTTPClient</title><content type='html'>Continuing my coverage of authentication support in Oracle HTTPClient from my previous posting. HTTPClient started supporting NTLM in 10.1.3.x time frame. It is supported but not yet documented. This document is created by Alex Kosowski who took over HTTPClient development from me a few years ago. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How to use NTLM with Oracle HTTPClient&lt;br /&gt;&lt;br /&gt;Purpose&lt;br /&gt;&lt;br /&gt;This document provides a brief description of NTLM, and describes how to use NTLM authentication with Oracle HTTPClient.&lt;br /&gt;&lt;br /&gt;NTLM Overview&lt;br /&gt;&lt;br /&gt;NTLM is a proprietary challenge/response authentication protocol used by Microsoft browsers, proxies, and servers. A client using NTLM is able to prove its identity to a server without sending a password.&lt;br /&gt;&lt;br /&gt;NTLM is a connection-oriented protocol. Once the connection is authenticated, no further credentials are required as long as the connection remains open.&lt;br /&gt;&lt;br /&gt;Proxy servers may also use NTLM for client authentication. However, unlike request-oriented authentication like Basic and Digest, an NTLM client may only authenticate its connection with the proxy, not the resource server.&lt;br /&gt;&lt;br /&gt;NTLM support has been built into the Oracle HTTPClient, from OC4J 10.1.3.1 and up.&lt;br /&gt;&lt;br /&gt;NT Domain Name&lt;br /&gt;&lt;br /&gt;In NTLM, the NT Domain name qualifies the username. The account identifier is &lt;NT Domain&gt;\&lt;Username&gt;. The NT Domain may be specified in HTTPClient by prefixing the username with the NT Domain name followed by a backslash.&lt;br /&gt;&lt;br /&gt;For example, for the NT Domain OPERATIONS and the username jsmith, the fully qualified username is OPERATIONS\jsmith.&lt;br /&gt;&lt;br /&gt;If no NT Domain is given, the default (if any) is assumed. The default NT Domain is set in HTTPClient using the System Property HTTPClient.ntlm.defaultDomainName. If the username is given without an NT Domain, and no default NT Domain is defined in HTTPClient, the NTLM-protected server may assume its own default NT Domain.&lt;br /&gt;&lt;br /&gt;Realm&lt;br /&gt;&lt;br /&gt;A Realm, as specified in authentication schemes such as Basic, does not apply to NTLM. The NTLM challenge does not have a realm directive. Therefore, all NTLM credentials are assumed to be part of the same empty ("") realm within HTTPClient.&lt;br /&gt;&lt;br /&gt;How to connect to an NTLM-protected resource server (e.g. IIS)&lt;br /&gt;&lt;br /&gt;To connect to an NTLM-protected resource server, add the NTLM credentials to the HTTPClient AuthorizationInfo credential store. As with Basic and Digest authentication, HTTPClient will automatically query the credential store, when challenged by an NTLM server.&lt;br /&gt;&lt;br /&gt;Credentials may be added either by using an HTTPConnection instance&lt;br /&gt;&lt;br /&gt;HTTPConnection conn = new HTTPConnection( myHost, myPort );&lt;br /&gt;conn.addNtlmAuthentication( myUsername, myPassword );&lt;br /&gt;&lt;br /&gt;or directly using AuthorizationInfo.&lt;br /&gt;&lt;br /&gt;AuthorizationInfo.addNtlmAuthentication( myHost, myPort, myUsername, myPassword )&lt;br /&gt;&lt;br /&gt;A complete example:&lt;br /&gt;&lt;br /&gt;HTTPConnection conn = new HTTPConnection( myHost, myPort );&lt;br /&gt;conn.addNtlmAuthentication( myUsername, myPassword );&lt;br /&gt;HTTPResponse response = conn.Get( "/index.htm" );&lt;br /&gt;int status = response.getStatusCode();&lt;br /&gt;assertEquals( 200, status );&lt;br /&gt;&lt;br /&gt;How to connect to an NTLM-protected proxy server&lt;br /&gt;&lt;br /&gt;To connect to an NTLM-protected proxy server, add the NTLM credentials to the HTTPClient AuthorizationInfo credential store. As with Basic and Digest authentication, HTTPClient will automatically query the credential store, when challenged by an NTLM server.&lt;br /&gt;&lt;br /&gt;Credentials may ONLY be added directly using AuthorizationInfo; the HTTPConnection.addNtlmAuthentication(..) method does not add credentials for a proxy.&lt;br /&gt;&lt;br /&gt;AuthorizationInfo.addNtlmAuthentication( myProxyHost, myProxyPort, myUsername, myPassword )&lt;br /&gt;&lt;br /&gt;A complete example:&lt;br /&gt;&lt;br /&gt;HTTPConnection conn = new HTTPConnection( myHost, myPort );&lt;br /&gt;conn.setCurrentProxy( myProxyHost, myProxyPort );&lt;br /&gt;AuthorizationInfo.addNtlmAuthentication( myProxyHost, myProxyPort, myUsername, myPassword, conn.getContext() )&lt;br /&gt;HTTPResponse response = conn.Get( "/index.htm" );&lt;br /&gt;int status = response.getStatusCode();&lt;br /&gt;assertEquals( 200, status );&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-7417409023490745656?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/7417409023490745656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=7417409023490745656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7417409023490745656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/7417409023490745656'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/04/ntlm-support-in-oracle-httpclient.html' title='NTLM support in Oracle HTTPClient'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-2422484459440628134</id><published>2008-03-24T16:42:00.006-04:00</published><updated>2008-03-25T12:02:57.389-04:00</updated><title type='text'>Authentication with Oracle HTTPClient</title><content type='html'>Oracle's HTTPClient supports Basic, Digest and NTML (since 10.1.3.1) schemes. I could not find good documentation on these. Here is my attempt to fill this gap. These code examples are taken from unit tests I wrote some years back.&lt;br /&gt;&lt;br /&gt;Basic Authentication&lt;br /&gt;&lt;br /&gt;I won't go in details on HTTP Basic auth. But here is an example of code that shows how the reader can configure HTTPClient to send HTTP Basic authentication info.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="font-style: italic;"&gt;URL url = new URL("http://localhost:1234");&lt;br /&gt;       HTTPConnection client = new HTTPConnection(url);&lt;br /&gt;&lt;br /&gt;       try {&lt;br /&gt;           client.addBasicAuthorization("realm name", "user", "password");&lt;br /&gt;           HTTPResponse response = client.Get(url.getFile());&lt;br /&gt;//assertEquals(200, response.getStatusCode());&lt;br /&gt;&lt;br /&gt;       } finally {&lt;br /&gt;           client.stop();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Digest Authentication&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        HTTPConnection client = new HTTPConnection(url);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        &lt;/span&gt;&lt;span style="font-style: italic;"&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;       client.addDigestAuthorization("ProxyAuthDigestSchemeTestServlet",validUserName,validPassword);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            HTTPResponse response = client.Get(url.getFile());&lt;br /&gt;//            assertEquals(200, response.getStatusCode());&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;            &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        } finally {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            client.stop();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Starting 10.1.3.1 HTTPClient supported NTML as well. I'll cover NTLM support in HTTPClient in my next post.&lt;br /&gt;&lt;br /&gt;Setting authentication method on the HTTPConnection object is just one way to set the credential. The two other ways are providing authentication info via an &lt;span style="font-style:italic;"&gt;AuthorizationPrompter&lt;/span&gt; implementation or Providing it in the &lt;span style="font-style:italic;"&gt;AuthorizationInfo&lt;/span&gt; object. See &lt;a href="http://download.oracle.com/docs/cd/B32110_01/web.1013/b32117/toc.htm"&gt;OracleHTTPClient javadoc &lt;/a&gt;for details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-2422484459440628134?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/2422484459440628134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=2422484459440628134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/2422484459440628134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/2422484459440628134'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/03/authetication-using-httpclient.html' title='Authentication with Oracle HTTPClient'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3294600144603632915</id><published>2008-03-24T16:28:00.004-04:00</published><updated>2008-03-24T16:35:11.173-04:00</updated><title type='text'>Debugging HTTPClient</title><content type='html'>Oracle HTTPClient extensively logs activity during setup and communication. This page provides some tips for enabling logging in HTTPClient.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;HTTPClient versions 10.1.2 &amp; earlier&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;HTTPClient versions 10.1.2. and earlier used a proprietary logging mechanism. &lt;br /&gt;&lt;br /&gt;To enable all logging, set the "HTTPClient.log.mask" system property to "-1"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;HTTPClient versions 10.1.3 &amp; later&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;HTTPClient versions 10.1.3 and later uses the standard JDK java.util.logging package. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By default, HTTPClient is enabled by the JDK java.util.logging properties specified at JVM startup. This is describe in the JavaDoc for java.util.logging.LogManager. Usually the JDK logging properties are configured in "&lt;JRE directory&gt;/lib/logging.properties".&lt;br /&gt;&lt;br /&gt;Additionally, HTTPClient logging may be enabled using System Properties. Set the "HTTPClient.log.level" System Property to one of the valid java.util.logging.Level values. See Log Levels, below.&lt;br /&gt;&lt;br /&gt;Log Levels&lt;br /&gt;&lt;br /&gt;HTTPClient only uses the trace portion of the JDK logging levels. This is because HTTPClient is a utility library, and is unaware of the application context within which an error occurs.&lt;br /&gt;&lt;br /&gt;For example, consider the occurrence of a connection loss. A financial application may log a connection loss as SEVERE. A server-monitoring application may log a connection loss as INFO. Since the severity depends on the application context, HTTPClient internally only logs messages at trace levels (CONFIG and lower), and expects the application to log exceptions as appropriate for the application.&lt;br /&gt;&lt;br /&gt;The following list indicates the HTTPClient usage of java.util.logging.Level: &lt;br /&gt;&lt;br /&gt;    * SEVERE - Not used by HTTPClient (v11 &amp; up), reserved for application&lt;br /&gt;    * WARNING - Not used by HTTPClient (v11 &amp; up), reserved for application&lt;br /&gt;    * INFO - Not used by HTTPClient (v11 &amp; up), reserved for application&lt;br /&gt;    * CONFIG - System properties and other configuration data&lt;br /&gt;    * FINE - Exceptions and other error conditions&lt;br /&gt;    * FINER - Warnings &lt;br /&gt;    * FINEST - Informational logging&lt;br /&gt;&lt;br /&gt;    * ALL - Everything logged in HTTPClient is visible at this level&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If the version of HTTPClient is 11 and later&lt;/span&gt;, verbose logging may be enabled.  To enable verbose mode, set the Java System Property "HTTPClient.log.verbose=true".&lt;br /&gt;&lt;br /&gt;Verbose logging adds the following fields to the logging output:&lt;br /&gt;&lt;br /&gt;    * Log Entry Date&lt;br /&gt;    * Logger Name - Usually the class name where the log entry occurred&lt;br /&gt;    * Log Level - Per java.util.logging.Level&lt;br /&gt;    * Exception Stack Trace&lt;br /&gt;&lt;br /&gt; In iAS Installation&lt;br /&gt;&lt;br /&gt;HTTPClient logging in iAS is effectively the same as standalone, except for the way Java System Properties are set. HTTPClient logging is directed to system out, which is written to one of the iAS logs.&lt;br /&gt;Enabling&lt;br /&gt;&lt;br /&gt;To set the HTTPClient logging System Properties, following these steps:&lt;br /&gt;&lt;br /&gt;1. Open the file $ORACLE_HOME/opmn/conf/opmn.xml&lt;br /&gt;2. Search for the OC4J process whose id matches that of the OC4J instance where you want to enable HTTPClient logging&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;process-type id="OC4J_Portal" module-id="OC4J"&gt;&lt;br /&gt;  &lt;environment&gt;&lt;br /&gt;    &lt;variable id="DISPLAY" value="localhost:0"/&gt;&lt;br /&gt;    &lt;variable id="LD_LIBRARY_PATH" value="/private1/iasinst/OraHome_4/lib32:&lt;br /&gt;      /private1/iasinst/OraHome_4/lib:/private1/iasinst/OraHome_4/network/lib:&lt;br /&gt;      /private1/iasinst/OraHome_4/jdk/jre/lib/sparc"/&gt;&lt;br /&gt;  &lt;/environment&gt;&lt;br /&gt;  &lt;module-data&gt;&lt;br /&gt;    &lt;category id="start-parameters"&gt;&lt;br /&gt;      &lt;data id="java-options" value="-server&lt;br /&gt;        -Djava.security.policy=/private1/iasinst/OraHome_4/j2ee/OC4J_Portal/config/java2.policy&lt;br /&gt;        -Djava.awt.headless=true -Xmx256m "/&gt;&lt;br /&gt;&lt;br /&gt;3. Set the HTTPClient logging System Properties in the value attribute of the &lt;data&gt; element "java-options", under the &lt;category&gt; element "start-parameters"&lt;br /&gt;4. Start the OC4J instance&lt;br /&gt;5. Review the HTTPClient log where the iAS installation writes the System Out. This log may be "$ORACLE_HOME/opmn/logs/OC4J~&lt;&lt;oc4j instance name&gt;&gt;~default_island~1"&lt;br /&gt;&lt;br /&gt;Thanks to Alex Kosowski for providing latest version of this information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3294600144603632915?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3294600144603632915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3294600144603632915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3294600144603632915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3294600144603632915'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/03/debugging-httpclient.html' title='Debugging HTTPClient'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-3510311701416172401</id><published>2008-01-03T15:38:00.000-05:00</published><updated>2008-01-04T15:53:35.950-05:00</updated><title type='text'>Security in Oracle Application Client Container</title><content type='html'>The Application Client container has been part of the JavaEE spec for a while now. The JavaEE specification devotes barely 4 or 5 pages to it. The Application Client container provides access to a subset of JavaEE apis in a remove JVM. A standalone java application that wishes to use JavaEE feature could be run in an application client container. &lt;br /&gt;&lt;br /&gt;OC4J provides a standalone application client container as documented on http://download-uk.oracle.com/docs/cd/B32110_01/web.1013/b28958/appclient.htm&lt;br /&gt;&lt;br /&gt;While more details are on this above link, I am clarifying here the usage of Callback handler within oc4j's application client container.&lt;br /&gt;&lt;br /&gt;The application client container reads a jar that is bundled with application-client.xml. In this deployment descriptor one can specify their Callback handler among various other things. A callback handler typically collect user name password from the user. If you don't provide the callback handler implementation, the Application Client Container looks for jndi.properties file in your application client jar. &lt;br /&gt;&lt;br /&gt;OC4J requires username, password and provider url to connect over ormi. These three properties can either be provided in the jndi.properties bundled with your application client, or your callback handler implementation must provide them. If both jndi.properties and the callbackhandler implementation are there the callbackhandler takes priority.&lt;br /&gt;&lt;br /&gt;You might need to write your own custom Callbackhandler implementation to launch gui for example. The customer callback handler would implement the javax.security.auth.callback.CallbackHandler interface. You will need to bundled your Callbackhandler and its dependencies in the jar that is passed to Oc4j's Application Client container.&lt;br /&gt;&lt;br /&gt;Note that the CallbackHandler implementation has to supply a no args constructor, for  oc4j's app client container only looks for a no args call back handler.&lt;br /&gt;&lt;br /&gt;Now you don't need to write your own login module. When the oc4j application client container needs to authenticate, it will get the user name and the password from the Callbackhandler.  It uses its own LoginModule to send the user name and password over the wire to the server to authenticate the client.&lt;br /&gt;&lt;br /&gt;Dear readers, A question for you: Does the limitation to provide an implementation of CallbackHandler with a no args constructor seem overbeering to you? The JavaEE spec is silent about this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-3510311701416172401?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/3510311701416172401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=3510311701416172401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3510311701416172401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/3510311701416172401'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2008/01/poor-cousin-of-java-ee-containers.html' title='Security in Oracle Application Client Container'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-8196109066656874321</id><published>2007-11-29T19:19:00.005-05:00</published><updated>2008-06-20T14:48:54.621-04:00</updated><title type='text'>I'll run with Security Manager if only I can get my policy right</title><content type='html'>So we know running with a Security Manager enhances security (with performance trade off). However not many applications run with SM. Running with SM degrades performance. In some testing I did, it did so on average by 10%, but it really depends on your application and the code path under test. So this performance hit might cause many applications to not consider running with SM. Another reason is that why you turn up SM you applications don't run properly. The access denied exception can be pretty hard to debug and to gather the set of minimum permissions required to run with SM is a tedious task. OC4J has since 10.1.3.1 provided a tool to solve this second issue. Its called PrintingSecurityManager. This security manager is available as a separate jar and can be used in any application, including ones not tied to OC4J or JEE. Basically this tool records security exception and coverts them into a policy grant(based on JDK's default policy file fomat) that would avoid a given security excetion. Now your job remains to review these grants before your put them in your policy file. See &lt;a href="http://download.oracle.com/docs/cd/B32110_01/web.1013/b28957/authoriz.htm#CHDJDJEB"&gt; this doc&lt;/a&gt;for details.&lt;br /&gt;&lt;br /&gt;I am hoping this becomes a tool in your arsenal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-8196109066656874321?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/8196109066656874321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=8196109066656874321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8196109066656874321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/8196109066656874321'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2007/11/ill-run-with-security-manager-if-only-i.html' title='I&apos;ll run with Security Manager if only I can get my policy right'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8877983663810747567.post-4350614418679250875</id><published>2007-11-20T15:27:00.000-05:00</published><updated>2007-11-20T20:59:48.758-05:00</updated><title type='text'>Getting this out before the new year rolls in</title><content type='html'>Better late than never. I presented a BOF at JavaOne 07 with Jeff Trent.  We talked about JavaSE, JavaEE &amp;amp; JACC security.  We focussed on Authorization aspects of the security. The idea was to give folks 101 on JavaSE &amp;amp; JavaEE(my fingers want to type J2ee so bad) security and how JACC bridges the gap in the two world. Yup, before JACC the authorization model in JavaSE &amp;amp; JavaEE were so different.&lt;br /&gt;Another pre JACC problem is that in JavaEE world there was no standard way to plug in third party Authorization providers. Each app server supported a different mix(if any).  Assuming your app server vendor supports third party Authorization Provider plug in,  the moment you switch you app server, that integration went kaput.&lt;br /&gt;JACC solves this problem cleanly and in a portable fashion.&lt;br /&gt;&lt;br /&gt;JavaSE, deals with Permission, Protection domain, SM &amp;amp; Access Controller. The JavaEE model dealt with security constraints &amp;amp; method permission elements. Every  App server dealt with these in their own way. The JACC spec unified these two. The spec is basically divided in three parts. Provider Configuration, Pollicy Configuration and Policy Decision &amp;amp; Enforcement Contracts. Now I would have named these contracts a little different. e.g App Server, Deployment Tool &amp;amp; Runtime contracts. Or something along the lines. You get the drift?&lt;br /&gt;&lt;br /&gt;Read on for the lowdown on the three contracts.&lt;br /&gt;&lt;br /&gt;The first contract deals with how and app server will install a jacc provider, what a compliant provider should do etc. (See jsr 115 for normative text)&lt;br /&gt;The second contract introduces new permission objects and sets rules on translating security contraints and method permissions into these new permission objects. The objects are then stored in the jacc provider.&lt;br /&gt;The third contract lays the responsibility for PEP(policy enforcement point).  It talks different ways for enforcing authorization.&lt;br /&gt;&lt;br /&gt;Now what I haven't seen much of if the use of this  feature to integrate with Third Party AuthZ providers.  I am hoping a reader could point any such integration. Please  feel free to add your comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8877983663810747567-4350614418679250875?l=enterprisesecurityinjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enterprisesecurityinjava.blogspot.com/feeds/4350614418679250875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8877983663810747567&amp;postID=4350614418679250875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4350614418679250875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8877983663810747567/posts/default/4350614418679250875'/><link rel='alternate' type='text/html' href='http://enterprisesecurityinjava.blogspot.com/2007/11/getting-this-out-before-new-year-rolls.html' title='Getting this out before the new year rolls in'/><author><name>Vinay Shukla</name><uri>http://www.blogger.com/profile/18201137617672461896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_e9_mNQL0LH4/SRSFOtCVu5I/AAAAAAAAAB8/20XxzeUsaIc/S220/Self1.JPG'/></author><thr:total>0</thr:total></entry></feed>
