<?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-4258496154335394031</id><updated>2012-02-12T08:54:25.111-08:00</updated><category term='mobile'/><category term='provisioning'/><category term='organizations'/><category term='openid'/><category term='federations'/><category term='specialization'/><category term='a5/1'/><category term='smart card'/><category term='road pricing'/><category term='web'/><category term='accountability'/><category term='rsa'/><category term='NFC'/><category term='incidents'/><category term='about'/><category term='conference'/><category term='open source'/><category term='risk'/><category term='future workspaces'/><category term='trends'/><category term='skimming'/><category term='browser'/><category term='cacert'/><category term='idenity'/><category term='SIM application toolkit'/><category term='perimeter'/><category term='semantics'/><category term='SIM'/><category term='Android'/><category term='fraud'/><category term='authorization'/><category term='social network'/><category term='car'/><category term='pki'/><category term='information card'/><category term='certificates'/><category term='authentication'/><category term='perspective'/><category term='defense in depth'/><category term='security'/><category term='employees'/><category term='TSPM'/><category term='gsm'/><category term='cloud'/><category term='context'/><category term='Java'/><category term='blog'/><category term='mobile PKI'/><category term='gsm a5/1 security digid'/><category term='rbac'/><category term='openaselect'/><category term='de-perimeterization'/><category term='graceful degradation'/><category term='identity'/><category term='XACML'/><category term='payment'/><category term='epassport'/><title type='text'>Security, something, something...</title><subtitle type='html'>MartijnO's blOg</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-3841318217342952166</id><published>2012-02-09T03:03:00.000-08:00</published><updated>2012-02-09T03:35:10.281-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSPM'/><category scheme='http://www.blogger.com/atom/ns#' term='context'/><category scheme='http://www.blogger.com/atom/ns#' term='authorization'/><category scheme='http://www.blogger.com/atom/ns#' term='XACML'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Context-enhanced Authorization</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WxA9BVySfRI/TzOp8K4YnHI/AAAAAAAAD-k/dC4Rg6N3laE/s1600/logo_1_tag_184x185.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-WxA9BVySfRI/TzOp8K4YnHI/AAAAAAAAD-k/dC4Rg6N3laE/s200/logo_1_tag_184x185.png" width="198" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white; text-align: left;"&gt;Context information can make authorization management more flexible and more secure. Knowing when and where users are, and what they are up to helps in determining which access rules to apply. &lt;/span&gt;&lt;a href="http://www.novay.nl/digitale-identiteit" style="background-color: white; text-align: left;"&gt;We&lt;/a&gt;&lt;span style="background-color: white; text-align: left;"&gt; recently did a &lt;/span&gt;&lt;a href="http://www.novay.nl/projecten/context-enhanced-authorization/12433" style="background-color: white; text-align: left;"&gt;project&lt;/a&gt;&lt;span style="background-color: white; text-align: left;"&gt; with Rabobank and IBM where we ask (and answer) questions such as:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Synopsistekst" style="background-color: white; margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;What authorization related use-cases could benefit from context information?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Which context-sources are relevant, mature enough, secure enough to be used today (or in the very near future)?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;How to deal with the (lack of) quality and authenticity of context?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;How does context information interact with authorization standards such as XACML and today's implementations of those standards? (See my &lt;a href="http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy.html"&gt;previous&lt;/a&gt; &lt;a href="http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy_09.html"&gt;posts&lt;/a&gt; for more technical details on the hands-on XACML work that we did in that project.)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/FiDhgheQZCY/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FiDhgheQZCY?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/FiDhgheQZCY?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: inherit;"&gt;The main lessons learned (the answers to the above questions) are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Typical use-cases can be found in the area of the mobile workforce ("nomadic working", etc.). As organizations introduce these new ways of working, traditional security policies that are only based on (authenticated) identity and static roles and entitlements are too strict and too coarse-grained. Context can make a difference here and allows finer-grained access so that, for example, medium level security tasks can be performed from home if the context allows this.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;A model for context-information can be constructed around different context-types, some traditional (location, time, ...), some more exotic (physiological, mental, social, ...). The above use-cases can already be adressed with the more traditional context-sources: location, time, proximity, device id, network id. These basic context-sources are readily available, and are under control of the organization.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;The easiest way to deal with authenticity and quality of context is to rely on trusted context-sources that are under control of the organization.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Externalization of authorization, such as propagated by the Attribute Based Access Control (ABAC) paradigm (and facilitated by standards such as XACML) works well in practice when combined with context information. In a demonstrator (see video above) we showed that adding context to authorization policies managed by Tivoli Security Policy Manager (a XACML IBM product) comes down to adding a policy information point. Relying applications only need to understand XACML in order to become context-enabled.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;Obviously, there are questions left for future research. How to deal with privacy issues is one of them. Complexity of policies and other scalability and performance issues form another. Want to read more? Go check out the &lt;a href="http://www.novay.nl/okb/projects/context-enhanced-authorization/12435"&gt;project page&lt;/a&gt; or read the &lt;a href="https://doc.novay.nl/dsweb/Get/Document-133948"&gt;white paper&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-3841318217342952166?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/3841318217342952166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2012/02/context-enhanced-authorization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3841318217342952166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3841318217342952166'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2012/02/context-enhanced-authorization.html' title='Context-enhanced Authorization'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-WxA9BVySfRI/TzOp8K4YnHI/AAAAAAAAD-k/dC4Rg6N3laE/s72-c/logo_1_tag_184x185.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-8737139761622213761</id><published>2012-02-09T00:13:00.000-08:00</published><updated>2012-02-10T04:50:53.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSPM'/><category scheme='http://www.blogger.com/atom/ns#' term='authorization'/><category scheme='http://www.blogger.com/atom/ns#' term='XACML'/><title type='text'>XACML with Tivoli Security Policy Manager - Part 2</title><content type='html'>&lt;br /&gt;(This is part 2, for installation &amp;amp; configuration see &lt;a href="http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy.html"&gt;part 1&lt;/a&gt;)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Using the TIP to specify services&lt;/b&gt;&lt;br /&gt;TSPM needs to have a model of the resources that need protection (collections of resources are called&amp;nbsp;&lt;i&gt;services&amp;nbsp;&lt;/i&gt;in the TSPM documentation). Rather than an unstructured bag of resources, a service in TSPM is specified as a tree of labeled nodes. Services can be created by hand using the web-based editor inside the TIP, or can be imported from other descriptions of applications.&lt;br /&gt;&lt;br /&gt;An example of a supported description language for importing services is WSDL. It is relatively easy to start protecting web services in this way, just point TIP towards your WSDL file (it even supports&amp;nbsp;&lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/wikis/home/wiki/Tivoli%20Security%20Policy%20Manager/page/Importing%20Multi-Part%20WSDL%20files?lang=en"&gt;multi-part WSDL including schemas&lt;/a&gt;). The resulting application model consists of the web methods of the web service (as resources). A PEP can then try to access these resources using the "invoke" action.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using the TIP to specify policies&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Policies can be created using the web-based structure editor inside the TIP. A policy can be attached nodes of a service, and the policy then holds for that node and all child-nodes of that node.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-h7gszu0iLIQ/TzKh0cmsSZI/AAAAAAAAD-c/Vj0frszP4Kw/s1600/TIP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://3.bp.blogspot.com/-h7gszu0iLIQ/TzKh0cmsSZI/AAAAAAAAD-c/Vj0frszP4Kw/s400/TIP.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A policy built in the editor is series of rules connected using "else-if" connectives. Each rule consists of elementary propositions formed by comparing an attribute with a value of approprate type, connected using "or" and "and" connectives.&lt;br /&gt;&lt;br /&gt;The web based nature of the structure editor forces it to be simple. Policies, perhaps created using some other editor, can also be imported as long as they are in XACML format. And, of course, polcies can be exported.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Writing a custom PEP&lt;/b&gt;&lt;br /&gt;To test an installed and registered RTSS just use the authorization web service. Hand-craft a XACML request and send it using curl:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;curl --basic -u "wasadmin:waspassword" --header "Content-type: text/xml;charset=UTF-8" --header "SOAPAction: http://xacml.ws.authz.rtss.tscc.ibm.com/rtss/AuthzService/XACML" --data "@request.xml" "http://tspm:9080/rtss/authz/services/AuthzService"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(Where a file request.xml holds the XACML request.) Note that the service uses basic authentication. The same web service is also exposed on an https port, allowing mutual TLS authentication (and possibly&amp;nbsp;&lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/wikis/home/wiki/Tivoli%20Security%20Policy%20Manager/page/Tivoli%20Integrated%20Portal%20Troubleshooting?lang=en"&gt;fallback basic authentication&lt;/a&gt;&amp;nbsp;to authenticate the client). The request to send&amp;nbsp;&lt;a href="http://www.ibm.com/developerworks/wikis/display/tivolisecuritypolicymanager/Authorization+Web+Service#AuthorizationWebService-Environment%3A"&gt;needs an environment section&lt;/a&gt;&amp;nbsp;with a "ContextId" attribute, and issuer "http://security.tivoli.ibm.com/policy/distribution".&amp;nbsp;The&amp;nbsp;resource section of the request refers to identifiers of the nodes in the service (as specified via TIP as above).&lt;br /&gt;&lt;br /&gt;Based on the WSDL of TSPM's authorization service you can also create a custom PEP client with JAX-WS.&lt;br /&gt;&lt;br /&gt;An alternative to write a custom PEP in Java is to use the JACC+ API provided by IBM. This API implements (and extends) the&amp;nbsp;&lt;a href="http://java.sun.com/j2ee/javaacc/"&gt;Java Authorization Contract for Containers&lt;/a&gt;&amp;nbsp;(JSR-115). The resulting Java code will be at a slightly higher level of abstraction, but this PEP needs an instance of RTSSClient (and thus needs to run inside WAS). You'll need the&amp;nbsp;&lt;code&gt;com.ibm.sec.authz.jaccplus_7.3.jar&lt;/code&gt;&amp;nbsp;that came with RTSSClient and the&amp;nbsp;&lt;code&gt;javax.j2ee.jacc.jar&lt;/code&gt;&amp;nbsp;(or stubs thereof) to compile your war.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Writing a custom PIP&lt;/b&gt;&lt;br /&gt;A policy information point (PIP) provides values for attributes that are not part of the request sent by the PEP. TSPM has some environment attributes pre-configured (e.g. time of day, date), an external PIP allows to add other environment attributes. A custom PIP needs to implement the&amp;nbsp;&lt;code&gt;IExternalFinder&lt;/code&gt;&amp;nbsp;interface and needs to be packaged as an OSGi module (which comes down to including a 3-line plugin.xml in the jar) and needs to be registered (which comes down to adding some lines to the&amp;nbsp;&lt;code&gt;security-services.xmi&lt;/code&gt;&amp;nbsp;file on the WAS and running an&amp;nbsp;&lt;code&gt;osgiCfgInit.sh&lt;/code&gt;&amp;nbsp;script).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;This is not a product review! (so these are just some observations...)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Configuring IBM Tivoli Security Policy Manager, and the stack of technologies it depends on, is, doable yet by no means trivial (for a beginner). It gets easier though, after a couple installation attempts.&lt;/li&gt;&lt;li&gt;Implementing XACML support into external applications (essentially implementing a PEP interface), on the other hand, turned out to be simpler than expected.&lt;/li&gt;&lt;li&gt;The same holds for implementing a PIP interface.&lt;/li&gt;&lt;li&gt;The web-based editors in TIP for services and policies were ok for our purposes, yet may be a bit limited when dealing with complex services and policies&lt;/li&gt;&lt;/ul&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-8737139761622213761?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/8737139761622213761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy_09.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/8737139761622213761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/8737139761622213761'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy_09.html' title='XACML with Tivoli Security Policy Manager - Part 2'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-h7gszu0iLIQ/TzKh0cmsSZI/AAAAAAAAD-c/Vj0frszP4Kw/s72-c/TIP.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-3579233978915322129</id><published>2012-02-08T13:14:00.000-08:00</published><updated>2012-02-09T00:11:37.865-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSPM'/><category scheme='http://www.blogger.com/atom/ns#' term='authorization'/><category scheme='http://www.blogger.com/atom/ns#' term='XACML'/><title type='text'>XACML with Tivoli Security Policy Manager - Part 1</title><content type='html'>&lt;span style="font-family: inherit;"&gt;Over at Novay we've been working with XACML in the context (pun intended) of a couple of projects. One such project is&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.novay.nl/okb/projects/context-enhanced-authorization/12435" style="font-family: inherit;"&gt;Context-enhanced Authorization&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;, which I will cover in a seperate post. In another project we are looking at interoperability with IBM's DataPower appliance in the presence of already existing XACML infrastructure, I also hope to cover that a seperate post at some point in the future.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;For now, let me just get some of the (technical) XACML experiences off my chest, both to have a record of high level steps needed to deploy a real-world XACML implementation (such implementations can be pretty intimidating), and to be able to talk about the issues&amp;nbsp;that we encountered&amp;nbsp;with XACML in general and TSPM in particular. Caution: If you're not comfortable with the general XACML PAP, PDP, PEP, PIP terminology, this post may not be for you ;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;We used IBM's Tivoli Security Policy Manager (TSPM) in these projects. TSPM runs as an enterprise Java application inside IBM's WebSphere Application Server (WAS). It needs a database to store policies (either Derby or DB2; Derby was good enough for our purposes). And it needs a user registry for administrative user accounts (OpenLDAP works ok for our purposes).&lt;br /&gt;&lt;br /&gt;I used the 64-bit Linux version of WAS 7.0 which installs fine on Fedora or SUSE inside VMWare and in the Amazon cloud. I used the graphical installer, which means some extra packages need to be installed on the target machine (otherwise the OS can stay pretty minimal).&amp;nbsp;I updated WAS to the latest version (7.0.0.21 at the moment of writing).&lt;br /&gt;&lt;br /&gt;TSPM itself is installed using a graphical installer as well. The installer is a 32-bit (Eclipse) application, so compatibility packages are needed to install on 64-bit Linux.&lt;br /&gt;&lt;br /&gt;To turn TSPM into a PAP a so-called Tivoli Integrated Portal (TIP) needs to be installed. This is another enterprise Java application which runs inside a seperate WAS instance. Again a 32-bit Eclipse installer is used here. TIP exposes a web interface which allows to create services and policies.&lt;br /&gt;&lt;br /&gt;To turn TSPM into a PDP the Runtime Security Services (RTSS) server needs to be installed. This is another enterprise Java application which, typically, runs inside the same WAS instance that TSPM was installed on. The same 32-bit Eclipse installer is used. RTSS exposes a SOAP web service that PEPs can send authorization requests to.&lt;br /&gt;&lt;br /&gt;There's also a higher level Java API (the JACC+ API) for implementing PEPs (see below), this requires the PEP to run on a seperate WAS and an enterprise Java application called RTSSClient needs to be installed. A JACC+ PEP can also run locally (on the WAS that runs TSPM), the RTSSClient then replaces the RTSS (i.e. you don't install RTSS at all).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;Some scripts need to be run to configure TSPM and to register RTSS (and/or RTSSClient). Especially the&amp;nbsp;&lt;code&gt;tspmConfigTool&lt;/code&gt;&amp;nbsp;took some retries to get right. These scripts take configuration files (or "response" files) as input, making it easier to deploy the same configuration elsewhere... once you get it right.&lt;br /&gt;&lt;br /&gt;A local policy distribution target (PDT) needs to be registered so that policies can be distributed from the PAP to the PDP. If TSPM acts both as PAP and as a single PDP (servicing multiple PEPs, the simplest XACML use case) the whole notion of PDT seems odd (changes to the policy are distributed... to itself, but only if you tell it to do so). The notion of PDT is not part of the XACML spec (despite being a 3-letter abbreviation starting with a 'P'). In the use case where we hooked up the DataPower to TSPM the DataPower itself can also act as a PDP and needs to be registered using the&amp;nbsp;&lt;code&gt;tspmRegisterPDT.sh&lt;/code&gt;&amp;nbsp;script (the&amp;nbsp;&lt;a href="http://publib.boulder.ibm.com/infocenter/wsdatap/4mt/index.jsp?topic=%2Fcom.ibm.dp.xi.doc%2Fintegratingwithtspm29.htm"&gt;instructions&lt;/a&gt;&amp;nbsp;are not part of the configuration guide, and you may need to use the&amp;nbsp;&lt;code&gt;gsk7cmd&lt;/code&gt;&amp;nbsp;&lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg24017773"&gt;command&lt;/a&gt;&amp;nbsp;which was not installed by default).&lt;br /&gt;&lt;br /&gt;Obviously, some things went wrong during installation and configuration. Some of these issues blocked the installation or configuration process, some issues only became clear after working with TSPM for a while. Here's a small selection:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When installing on an instance in the Amazon cloud, the IP address of the instance can change (not the external IP, which was fixed using an elastic IP address, but the internal one). TSPM requires a fully-qualified host name at several points during installation. The solution is to set up an alias for the machine in &lt;code&gt;/etc/hosts&lt;/code&gt; and/or to &lt;a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.base.doc/info/aes/ae/trun_multiplenic.html"&gt;explicitly fix the IP address&lt;/a&gt; in WAS's configuration.&lt;/li&gt;&lt;li&gt;There's a known WS-Security issue with timestamps, &lt;a href="https://www-304.ibm.com/support/docview.wss?uid=swg21509354"&gt;which requires fixing some policy settings in WAS&lt;/a&gt;&amp;nbsp;before policies can be distributed.&lt;/li&gt;&lt;li&gt;The &lt;code&gt;tspmRegisterPDT.sh&lt;/code&gt; script failed with some internal exception. This turned out, after a very long search, to be a corrupted log file causing the "SIB MessageBroker" not to be started. Causing some WS-Notification call to fail during registration of the PDT.&lt;/li&gt;&lt;li&gt;RTSS appeared to cache authorization decisions for 2 minutes (which was not appropriate for the kind of policies used in the &lt;a href="http://www.novay.nl/okb/projects/context-enhanced-authorization/12435"&gt;Context-enhanced Authorization&lt;/a&gt; project). A related question was answered on &lt;a href="http://stackoverflow.com/questions/8097131/how-to-disable-caching-for-a-custom-pip-in-tspm"&gt;stackoverflow.com&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Resources&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The TSPM &lt;a href="http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.tspm.doc_7.1/PDF/tspm_install_pdf.pdf"&gt;installation&lt;/a&gt;, &lt;a href="http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.tspm.doc_7.1/PDF/tspm_config_pdf.pdf"&gt;configuration&lt;/a&gt;, and &lt;a href="http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.tspm.doc_7.1/PDF/tspm_admin_pdf.pdf"&gt;administration&lt;/a&gt; guides over at the IBM information center.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.redbooks.ibm.com/abstracts/sg247880.html?Open"&gt;IT Security Policy Management Usage Patterns Using IBM Tivoli Security Policy Manager&lt;/a&gt;&amp;nbsp;2011 Redbook by Buecker et al. was useful, especially Chapter 8 (on custom PEPs and PIPs).&lt;/li&gt;&lt;li&gt;The &lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/wikis/home?lang=en#/wiki/Tivoli%20Security%20Policy%20Manager/page/Home"&gt;TSPM wiki&lt;/a&gt; on DeveloperWorks.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-3579233978915322129?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/3579233978915322129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3579233978915322129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3579233978915322129'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2012/02/xacml-with-tivoli-security-policy.html' title='XACML with Tivoli Security Policy Manager - Part 1'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-1560240292423281028</id><published>2011-07-13T01:54:00.000-07:00</published><updated>2011-07-19T02:32:55.444-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsm'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM application toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM'/><title type='text'>Digipass Nano</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-R0UPwAWD_JQ/Th1fJLv0N8I/AAAAAAAADoc/LTvOot4ZjaQ/s1600/nano_on_ah_sim_los.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 113px; height: 86px;" src="http://4.bp.blogspot.com/-R0UPwAWD_JQ/Th1fJLv0N8I/AAAAAAAADoc/LTvOot4ZjaQ/s320/nano_on_ah_sim_los.png" alt="" id="BLOGGER_PHOTO_ID_5628759720659793858" border="0" /&gt;&lt;/a&gt;I recently had an opportunity (thanks &lt;a href="http://surfnet.nl/"&gt;SURFnet&lt;/a&gt;, and &lt;a href="http://vasco.com/"&gt;VASCO&lt;/a&gt;) to have some hands-on experience with a novel class of authentication tokens. In a project for SURFnet my colleague &lt;a href="http://maarten.wegdam.name/"&gt;Maarten &lt;/a&gt;&lt;a href="http://www.novay.nl/our-people/maarten-wegdam/4440"&gt;Wegdam&lt;/a&gt; and myself looked at so-called SIM augmented authentication tokens, and the VASCO Digipass Nano in particular. The results of our analysis, in the form of a more &lt;a href="http://www.surfnet.nl/Documents/DP_Nano_report_1_0_0.pdf"&gt;detailed report&lt;/a&gt;, is  available from the &lt;a href="http://www.surfnet.nl/nl/Vertrouwde_identiteit/Identitymanagement/Pages/Identity_management.aspx"&gt;SURFnet website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;About the technology: A SIM augmented solution sits between the SIM and the handset (the ME) and consists of a very thin chip (see the image) in a sticker. It basically relays all traffic, consisting of so-called ISO7816-4 APDUs, from ME to SIM and back, while intercepting certain APDUs and injecting certain other APDUs. The user can interact with this benign man-in-the-middle through the SIM application toolkit (GSM 11.14, see also my earlier post on &lt;a href="http://martijno.blogspot.com/2009/10/mobile-pki.html"&gt;Mobile PKI&lt;/a&gt;), which is implemented in any GSM handset. VASCO's Digipass Nano uses this trick to implement an event based One Time Password token that is accessed by navigating the SIM menu in the handset, yet is fully secure (if GSM 11.14 is implemented securely) from snooping malware.&lt;br /&gt;&lt;br /&gt;The man-in-the-middle characterization of SIM augmented solutions sounds scary, if you think about it, especially with respect to the trust that the ME (through GSM 11.14) puts in the SIM.  On the other hand:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The (security, usability, and business model) advantages of secure storage of credentials may outweigh the  (security, usability, and business model)  disadvantages of asking the user to place a hardware device between SIM and ME. (I.e., the security should not be analyzed in isolation, and there are both security advantages and disadvantages.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An attack which asks the user to place a (not-to-be-trusted) SIM augmented solution in their handset doesn't scale (and there is so much more low-hanging fruit for attackers, which scales much better). For a full threat analysis, see the report.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The average user isn't too concerned about what the SIM augmented solution can do. We did a small-scale user test as part of our research.&lt;/li&gt;&lt;li&gt;SIM augmentation based on GSM 11.14  allows, in principle, multiple secure elements (or &lt;a href="http://computertheology.blogspot.com/2008/08/secure-core.html"&gt;secure cores&lt;/a&gt;, in Du Castel speak) within a single handset. Multiple secure elements, representing multiple stake holders, breaks the Mobile Network Operator dominated model for (very secure) credential storage. We also did a brief business model analysis as part of the report.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Whether we will see SIM augmented solutions in the short term remains to be seen. But it's certainly interesting technology to analyze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-1560240292423281028?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/1560240292423281028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2011/07/digipass-nano.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1560240292423281028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1560240292423281028'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2011/07/digipass-nano.html' title='Digipass Nano'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-R0UPwAWD_JQ/Th1fJLv0N8I/AAAAAAAADoc/LTvOot4ZjaQ/s72-c/nano_on_ah_sim_los.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-2569309530685457184</id><published>2011-07-13T00:42:00.000-07:00</published><updated>2011-07-21T04:09:31.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='epassport'/><category scheme='http://www.blogger.com/atom/ns#' term='NFC'/><title type='text'>JMRTD for Android</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-ZY78T_PTq_g/Th1TNYKVCMI/AAAAAAAADoU/cvkpQG7RnWE/s1600/Max%2Bscreenshot%2B2.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 120px; height: 201px;" src="http://2.bp.blogspot.com/-ZY78T_PTq_g/Th1TNYKVCMI/AAAAAAAADoU/cvkpQG7RnWE/s320/Max%2Bscreenshot%2B2.jpg" alt="" id="BLOGGER_PHOTO_ID_5628746598572165314" border="0" /&gt;&lt;/a&gt;&lt;a href="http://jmrtd.org/"&gt;JMRTD&lt;/a&gt;, the Java library that I (&lt;a href="http://jmrtd.org/about.shtml"&gt;together with others&lt;/a&gt;) maintain to access and interpret ePassport content, has &lt;a href="http://sourceforge.net/projects/ajmrtd/"&gt;been&lt;/a&gt; ported to Android by &lt;a href="http://sourceforge.net/users/maxguenther"&gt;Max Günther&lt;/a&gt;. To demonstrate this, Max has developed an app (see the screenshot) for &lt;a href="http://www.google.com/nexus/"&gt;Nexus S&lt;/a&gt; (and other &lt;a href="http://www.youtube.com/watch?v=49L7z3rxz4Q"&gt;NFC Android&lt;/a&gt; handsets). We're not the first ePassport project &lt;a href="http://code.google.com/p/androsmex/"&gt;on Android&lt;/a&gt; &lt;a href="http://www.dexlab.nl/downloads.html#ecl0wn"&gt;or NFC&lt;/a&gt;, but we try to be the most usable one!&lt;br /&gt;&lt;br /&gt;The contactless technology in ePassports, ISO-14443, is fully &lt;a href="http://developer.android.com/reference/android/nfc/tech/IsoDep.html"&gt;compatible with NFC&lt;/a&gt;. Essentially this means that an NFC device in reader mode will be able to read ePassports. That is, of course, if the device has sufficient access privileges (i.e. Basic Access Control BAC, and Extended Access Control EAC). Max's app demonstrates how the essential passport holder details (aka datagroup 1) and the passport holder's facial image (aka datagroup 2) can be displayed.&lt;br /&gt;&lt;br /&gt;The latter is actually non-trivial since that image is encoded in &lt;a href="http://www.jpeg.org/jpeg2000/"&gt;JPEG 2000&lt;/a&gt; by some issuing countries, a format that is not supported in Android by default (thankfully there's &lt;a href="http://code.google.com/p/jj2000/"&gt;jj2000&lt;/a&gt;). Another challenge that we encountered is the presence of a crippled version of &lt;a href="http://bouncycastle.org/"&gt;Bouncy Castle&lt;/a&gt; in Android 2.3 which prevents inclusion of the full version (thankfully there's &lt;a href="https://github.com/rtyley/spongycastle"&gt;Spongy Castle&lt;/a&gt;). In general we've made many changes to JMRTD and SCUBA to make these libraries easier to port to other platforms.&lt;br /&gt;&lt;br /&gt;We're working hard on making the app more robust and usable. Max and &lt;a href="http://www.linkedin.com/pub/claude-heyman/12/475/2ba"&gt;Claude Heyman&lt;/a&gt; are currently the main developers looking at Android NFC. We're trying to get MRZ OCR scanning to work (perhaps based on the &lt;a href="http://sourceforge.net/projects/javaocr/"&gt;Java OCR&lt;/a&gt; project).  In its current form the app is not doing document validation or access to EAC protected data, but JMRTD allows this, in principle. We hope to publish the proof-of-concept app via the Android market soon. If you own a Nexus S (and an ePassport) we're definitely interested in your &lt;a href="http://sourceforge.net/projects/ajmrtd/forums/forum/1838001"&gt;feedback&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Max published the app on the &lt;a href="https://market.android.com/search?q=ajmrtd"&gt;market&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-2569309530685457184?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/2569309530685457184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2011/07/jmrtd-for-android.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2569309530685457184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2569309530685457184'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2011/07/jmrtd-for-android.html' title='JMRTD for Android'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZY78T_PTq_g/Th1TNYKVCMI/AAAAAAAADoU/cvkpQG7RnWE/s72-c/Max%2Bscreenshot%2B2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-6668763050348422035</id><published>2011-05-16T12:44:00.000-07:00</published><updated>2011-07-19T05:46:44.456-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='provisioning'/><category scheme='http://www.blogger.com/atom/ns#' term='federations'/><category scheme='http://www.blogger.com/atom/ns#' term='idenity'/><title type='text'>The Federated Provisioning Problem</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-A7mq2bykfLc/TiVmYpwJh0I/AAAAAAAADzA/ohcgfwPPvIg/s1600/jit_diagram.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 262px; height: 109px;" src="http://3.bp.blogspot.com/-A7mq2bykfLc/TiVmYpwJh0I/AAAAAAAADzA/ohcgfwPPvIg/s320/jit_diagram.png" alt="" id="BLOGGER_PHOTO_ID_5631019482807371586" border="0" /&gt;&lt;/a&gt;&lt;span style="mso-ansi-language:EN-GB" lang="EN-GB"&gt;(Just dumping some projects results on this blog... ) We contributed to a study for SURFnet on identity &lt;a href="http://www.surfnet.nl/nl/Innovatieprogramma%27s/gigaport3/Documents/EDS-4%20Provisioning%20Scenarios%20in%20Federations%20Final.pdf"&gt;provisioning in the context of identity federations&lt;/a&gt; last year. My colleague &lt;a href="http://www.novay.nl/our-people/bob-hulsebosch/4388"&gt;Bob Hulsebosch&lt;/a&gt; presented about this on &lt;a href="https://tnc2011.terena.org/web/media/archive/2B"&gt;TNC11 &lt;/a&gt;(fast forward the video stream to 65'46").&lt;/span&gt;&lt;br /&gt;&lt;span style="mso-ansi-language:EN-GB" lang="EN-GB"&gt;&lt;br /&gt;Provisioning is the process of providing a set of deployed applications and/or services with updates of end-user identity information. Provisioning takes place, for instance, when new users enter an organization, when new authorization rights are assigned to users, or when they leave the organization (the latter case is usually referred to as deprovisioning).&lt;/span&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN-GB" lang="EN-GB"&gt;Provisioning has been recognized as an essential part of the identity management stack. Provisioning drives the other activities that are typically related to identity administration and management. An important driver for provisioning in the more traditional enterprise setting is compliance to rules and regulations. A major obstacle to wider adaptation of provisioning is the lack of widely agreed upon standards.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN-GB" lang="EN-GB"&gt;While provisioning is a non-trivial problem in many enterprise organizations, the problem gets worse still in the setting of identity federations as these involve cross-domain identity communication, and, more recently, dynamic services to enable complex collaboration forms such as virtual organizations. The drivers for adaption of provisioning standards in the world of identity federations may be different from those in the enterprise setting, the problem is equally of more important.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;At the same time, some researchers think federation may be part of the solution and introduce so-called just-in-time-provisioning which uses federation-style information interchange standards instead of the more traditional provisioning standards as seen in the enterprise domain.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN-GB" lang="EN-GB"&gt;The report gives a state-of-the-art analysis of provisioning products and standards and of the, still ongoing, federated provisioning debate. It classifies different types of applications and different types of provisioning scenarios in order to come up with a framework, which is helpful when selecting a strategy for dealing with federated provisioning. The results are validated by exploring (at a suitable level of abstraction) a case study on dynamic group management.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-6668763050348422035?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/6668763050348422035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2011/05/federated-provisioning-problem.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/6668763050348422035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/6668763050348422035'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2011/05/federated-provisioning-problem.html' title='The Federated Provisioning Problem'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-A7mq2bykfLc/TiVmYpwJh0I/AAAAAAAADzA/ohcgfwPPvIg/s72-c/jit_diagram.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-2128245667204772454</id><published>2010-09-17T04:06:00.000-07:00</published><updated>2010-09-17T08:24:03.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsm'/><category scheme='http://www.blogger.com/atom/ns#' term='gsm a5/1 security digid'/><category scheme='http://www.blogger.com/atom/ns#' term='a5/1'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM application toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM'/><title type='text'>SMS text authentication for patient access to Dutch electronic health record</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oQfyyV5fZVQ/TJOHhtLDSiI/AAAAAAAADkE/FOqy1v1XHnY/s1600/gsm.jpeg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 182px; height: 182px;" src="http://3.bp.blogspot.com/_oQfyyV5fZVQ/TJOHhtLDSiI/AAAAAAAADkE/FOqy1v1XHnY/s320/gsm.jpeg" alt="" id="BLOGGER_PHOTO_ID_5517902981590370850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The encryption algorithm A5/1 used in GSM has been suspect &lt;a href="http://groups.google.com/group/uk.telecom/msg/ba76615fef32ba32?pli=1"&gt;since at least 1994&lt;/a&gt; (when the algorithm leaked). &lt;a href="http://www.cs.virginia.edu/%7Ekn5f/"&gt;Nohl&lt;/a&gt;'s  talk at 26C3 (November 2009) demonstrates that a practical attack will become possible soon. And all of a sudden people start to get &lt;a href="http://www.telegraaf.nl/binnenland/7676918/__Geheime_dienst_vreest_afluistering__.html?p=1,1"&gt;nervous&lt;/a&gt; in 2010.&lt;br /&gt;&lt;br /&gt;As a follow-up to their &lt;a href="http://www.cs.ru.nl/B.Jacobs/PAPERS/BLG18295.pdf"&gt;report for the Dutch Ministry of Health&lt;/a&gt; &lt;a href="http://www.cs.ru.nl/ds"&gt;Radboud University&lt;/a&gt; and &lt;a href="http://www.pwc.com/nl/nl/index.jhtml"&gt;PriceWaterhouseCoopers&lt;/a&gt; recently &lt;a href="http://www.zorgvisie.nl/ICT/Nieuws-2/Landelijk-EPD-voorlopig-niet-via-internet-beschikbaar.htm"&gt;published&lt;/a&gt; &lt;a href="http://www.rijksoverheid.nl/ministeries/vws/documenten-en-publicaties/rapporten/2010/06/30/risicoanalyse-epd-digid.html"&gt;a risk assessment&lt;/a&gt; focusing on GSM based SMS text authentication as a factor to strengthen the Dutch government citizen-to-government authentication solution DigiD.&lt;br /&gt;&lt;br /&gt;SMS text authentication is already used in DigiD level 2, but the binding of a user's subscriber number to their DigiD is rather weak: anyone with access to the mailbox of the user's registered home address (the so-called GBA address) can bind a new mobile phone to the user's existing DigiD account (and subsequently order a password reset, completely hijacking the account). The original report by RU, PWC and TILT recommended to strengthen this binding process so that a patient would have to prove possession of a subscriber number to a government representative face-to-face. The strengthened DigiD (known as EPD-DigiD) can then be used by patients to access their electronic health record in a standard SMS OTP authentication scenario (during a session the user has an extra factor with a separate network connection to the provider).&lt;br /&gt;&lt;br /&gt;The conclusion of the RU/PWC risk analysis is that although breaking A5/1 leaves SMS authentication relatively secure (the risk of actual abuse is not that high) the perceived lack of security in the public opinion and the non-compliance with security standards may be damaging to the reputation to the government. The solution is not secure enough to allow patients to access their health records at this point in time.&lt;br /&gt;&lt;br /&gt;What I don't get is the proposed solution: a conversion table (on paper) sent to each user over regular snail mail (how secure is that?). The user uses this table to manually translate the code that was sent in an SMS message before entering it in the browser's form. This appears not to add an extra factor: an attacker that can eavesdrop on the Web channel and the GSM channel will soon learn the mapping. Also from a user experience perspective that sounds horrible.&lt;br /&gt;&lt;br /&gt;An alternative approach would be to install a SIM toolkit applet on the SIM which performs the translation automatically for the user. Rather than a static table per user one can even use a key (but with a decent cipher; I'm sure the current generation of SIMs in the field support AES or at least 3DES) and have real security. Sort of a light-weight-Mobile-PKI-without-the-PKI solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-2128245667204772454?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/2128245667204772454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2010/09/sms-text-authentication-for-patient.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2128245667204772454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2128245667204772454'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2010/09/sms-text-authentication-for-patient.html' title='SMS text authentication for patient access to Dutch electronic health record'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oQfyyV5fZVQ/TJOHhtLDSiI/AAAAAAAADkE/FOqy1v1XHnY/s72-c/gsm.jpeg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-5824185612093703665</id><published>2010-03-18T01:42:00.000-07:00</published><updated>2010-03-18T06:27:44.011-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM'/><category scheme='http://www.blogger.com/atom/ns#' term='NFC'/><title type='text'>NFC phones</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_oQfyyV5fZVQ/S6Im9BuYu7I/AAAAAAAADVo/IohTTyG0rR0/s1600-h/nmark.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 157px; height: 133px;" src="http://1.bp.blogspot.com/_oQfyyV5fZVQ/S6Im9BuYu7I/AAAAAAAADVo/IohTTyG0rR0/s320/nmark.png" alt="" id="BLOGGER_PHOTO_ID_5449961328948591538" border="0" /&gt;&lt;/a&gt;It's 2010. The NFC revolution should have happened by now.&lt;br /&gt;&lt;br /&gt;I know this is a classical bootstrap problem: why offer services if consumers don't own NFC handsets, why produce NFC handsets if nobody offers services?&lt;br /&gt;&lt;br /&gt;And then there are problems with the &lt;a href="http://www.smartcardalliance.org/resources/lib/Mobile_Payment_Business_Model_Research_Report.pdf"&gt;business model&lt;/a&gt;, there are cultural differences between banks and mobile operators, etc. There was a problem of the location of the secure element (SE): either embedded in the device (owned by the manufacturer), or on the SIM (owned by the operator). I think the mobile operators won.&lt;br /&gt;&lt;br /&gt;Oh, and there  have been countless &lt;a href="http://www.nfctimes.com/nfc-projects"&gt;trials&lt;/a&gt; and pilots.&lt;br /&gt;&lt;br /&gt;So where are the new handsets? Below is my list of annotated bookmarks.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nokia has an &lt;a href="http://europe.nokia.com/find-products/accessories/all-accessories/carrying-and-styling/shells/nokia-shell-cc-229d"&gt;NFC shell&lt;/a&gt; (2005) that can be strapped onto the &lt;a href="http://europe.nokia.com/find-products/devices/nokia-3220"&gt;Nokia 3220&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Samsung has its &lt;a href="http://mobilementalism.com/2006/02/11/samsung-and-philips-to-show-off-protoype-nfc-phone-at-3gsm/"&gt;SGH-X700N&lt;/a&gt; (2006).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nokia's clamshell model, the &lt;a href="http://europe.nokia.com/find-products/devices/nokia-6131-nfc"&gt;Nokia 6131-NFC&lt;/a&gt; (2007), and bar model, &lt;a href="http://europe.nokia.com/find-products/devices/nokia-6212-classic"&gt;Nokia 6212 classic&lt;/a&gt; (2008) are pretty popular. These S40 devices have a dedicated SE embedded into the handset.&lt;/li&gt;&lt;li&gt;There's a nice list of handsets over at &lt;a href="http://www.nfc-research.at/index.php?id=45"&gt;NFC Research in Hagenberg&lt;/a&gt;, including models by Sagem, LG, and Motorola (2008?).&lt;/li&gt;&lt;li&gt;LG seems to have had an &lt;a href="http://www.wirelessdesignasia.com/article-9574-stmicroelectronicsandlgelectronicsdemonstratemultiplenfcservicesonlgku380nfcmobilephone-asia.html"&gt;LG KU380-NFC&lt;/a&gt; handset with NFC support based on an STMicroeletronics chip.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nokia announced the &lt;a href="http://www.nokia.co.uk/find-products/all-phones/nokia-6216-classic"&gt;Nokia 6216 classic&lt;/a&gt; (2009) which was supposed to support an SE on the SIM (via SWP). But this model has been &lt;a href="http://www.nfctimes.com/news/nokia-kills-first-nfc-sim-phone"&gt;killed&lt;/a&gt; now.&lt;/li&gt;&lt;li&gt;Mobile-ecosystem found that &lt;a href="http://www.mobile-ecosystem.org/?p=1589"&gt;Samsung and LG have new NFC enabled smart phones&lt;/a&gt; (2010).&lt;/li&gt;&lt;li&gt;Samsung developed an NFC version of its &lt;a href="http://www.nearfieldcommunicationsworld.com/2010/02/17/32813/samsung-adds-nfc-to-bestselling-tocco-lite-star-player-one-avila/"&gt;S5230 smart phone&lt;/a&gt; for use in trials.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;And let's hope the &lt;a href="http://www.nearfieldcommunicationsworld.com/2009/11/05/32191/apple-testing-rfid-enabled-iphone/"&gt;rumors&lt;/a&gt;  about Apple's iPhone4G are true.&lt;/li&gt;&lt;/ul&gt;(I should have checked &lt;a href="http://en.wikipedia.org/wiki/Near_Field_Communication#NFC-enabled_handsets"&gt;Wikipedia&lt;/a&gt; before I compiled that list, theirs is a superset of mine. Never mind.)&lt;br /&gt;&lt;br /&gt;But maybe a different strategy is needed while we wait for the handset revolution: strap something onto an ordinary smart phone to NFC-enable it.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A sticker with a dumb RFID tag. Only tag emulation, so no smart poster support. But it should be enough for the most popular use case (proximity payment without asking for user consent).&lt;/li&gt;&lt;li&gt;A sticker with a &lt;a href="http://www.twinlinx.com/"&gt;smart tag&lt;/a&gt; which communicates with the handset over Bluetooth.&lt;/li&gt;&lt;li&gt;A MicroSD card such as the one by &lt;a href="http://www.gi-de.com/portal/page?_pageid=44,150689&amp;amp;_dad=portal&amp;amp;_schema=PORTAL"&gt;Giesecke &amp;amp; Devrient&lt;/a&gt; and the one by &lt;a href="http://www.tyfone.com/images/Partnership%20Release.Final.pdf"&gt;First Data and Tyfone&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-5824185612093703665?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/5824185612093703665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2010/03/nfc-phones.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/5824185612093703665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/5824185612093703665'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2010/03/nfc-phones.html' title='NFC phones'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oQfyyV5fZVQ/S6Im9BuYu7I/AAAAAAAADVo/IohTTyG0rR0/s72-c/nmark.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-7292109755683734820</id><published>2010-02-10T00:45:00.000-08:00</published><updated>2010-02-17T02:26:10.045-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social network'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='cacert'/><title type='text'>Community generated trust</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oQfyyV5fZVQ/S3J6rjFk11I/AAAAAAAADUY/LgT1_D1MKEI/s1600-h/cacert.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 169px; height: 38px;" src="http://3.bp.blogspot.com/_oQfyyV5fZVQ/S3J6rjFk11I/AAAAAAAADUY/LgT1_D1MKEI/s320/cacert.png" alt="" id="BLOGGER_PHOTO_ID_5436542588761200466" border="0" /&gt;&lt;/a&gt;I like &lt;a href="http://www.cacert.org/"&gt;CAcert.org&lt;/a&gt;. The basic premise of this CA is that trust is a community effort: the "by the people, for the people" kind of stuff. A social network for security geeks. Trust in derived identities (not identities of persons but identity of domain names or of Web servers) can then in principle be based on community generated trust so that steep yearly prices for server certificates can be avoided. We all benefit (except if you run a commercial CA, of course).&lt;br /&gt;&lt;br /&gt;I created my CAcert account ages ago, but only recently undertook some action to get my identity assured by the community. Here's how it works:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You create an account with the service and register one or more email addresses.&lt;/li&gt;&lt;li&gt;The service checks possession of each email address by sending a challenge link to click.&lt;/li&gt;&lt;li&gt;You can also register domain names (where you typically host Web servers) with the service, possession of the domain is checked in a similar way.&lt;/li&gt;&lt;li&gt;As a user you now have 0 points&lt;ul&gt;&lt;li&gt;You can have the service issue email certificates for your email addresses (for sending encrypted or signed emails, or for client side TLS authentication).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can have the service issue Web server certificates for your domains (for server side TLS authentication, i.e. HTTPS).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Issued certificates (based on a &lt;a href="http://en.wikipedia.org/wiki/Certificate_signing_request"&gt;CSR&lt;/a&gt; that you generate) are valid for 6 months and contain only basic information (not your full name, for instance).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Once you have over 50 points, newly issued certificates will be valid for 2 years and can contain your full name.&lt;/li&gt;&lt;li&gt;Once you have over 100 points, you can also have the service issue code signing certificates and you become a so-called &lt;i&gt;assurer&lt;/i&gt; (after you take the official online exam).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Certificates are signed by the service's root private key and can be checked using the service's &lt;a href="http://www.cacert.org/index.php?id=3"&gt;root certificate&lt;/a&gt; (at the time of writing that certificate is valid until 2033). Currently viewers of your TLS secured Web site will have to manually  insert the root certificate into their browser's trust store. The ambition of CAcert is  to have the service's root certificate included in Mozilla's trust  store distributed with Firefox.&lt;/li&gt;&lt;/ul&gt;How do you get more points? You will need to find an assurer (another user with over 100 points) and meet with him or her face-to-face. The assurer will check you passport (or driver's license or similar photo ID) according to certain guidelines and fill out a paper form which you need to sign. Depending on the experience of the assurer, he or she can give you 10 to 35 points maximum. The form is kept by the assurer for seven years and then destroyed. The service's Web site has a database that can be queried to find assurers near your location. I used this mechanism over the last couple of weeks to find some friendly people in &lt;a href="http://www.twente.nl/"&gt;Twente&lt;/a&gt; willing to check my identity (thanks Peter, Ashwin, Tom, Alex &amp;amp; Stephan).&lt;br /&gt;&lt;br /&gt;So how trustworthy is all of this, really? The foundation behind the CAcert is a non-profit organization being supported by &lt;a href="http://www.oophaga.org/"&gt;other&lt;/a&gt; &lt;a href="http://www.nlnet.nl/project/cacert/"&gt;non-profits&lt;/a&gt;. They seem serious about their &lt;a href="http://wiki.cacert.org/SecurityManual"&gt;infrastructure's security&lt;/a&gt;. The &lt;a href="http://wiki.cacert.org/Software/HowToInstallSource"&gt;server side  software&lt;/a&gt; is open source, and although it is written in PHP and Perl, it can be inspected by security researchers. For  cryptography the implementation relies on &lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt;. There's a whole community effort to train assurers in recognizing authentic government issued IDs. That all sounds pretty trustworthy (except maybe for the use of OpenSSL, which is &lt;a href="http://www.peereboom.us/assl/html/openssl.html"&gt;written by monkeys&lt;/a&gt; ;) ).&lt;br /&gt;&lt;br /&gt;Let's say I want a fake identity assured (i.e., a freshly generated free-mail account with a fake name and date of birth with 100 points). How difficult is that? I'll assume that until now all other users have been honest and have been perfectly assured based on government issued IDs. I'll need to find &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; evil assurers (at most ten). Those evil assurers should be willing to falsely assure my fake identity. Do those &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; assurers need to be &lt;span style="font-style: italic;"&gt;n&lt;/span&gt; different people? Maybe not: creating ten different accounts under my real name is possible (the service should be available to users which happen to have the same name and date of birth as an existing user). I could get those ten accounts assured by at most (&lt;span style="font-style: italic;"&gt;n&lt;/span&gt; * (&lt;i&gt;n&lt;/i&gt; + 1)) / 2 honest assurers so that each account gets 100 points. I then use those ten accounts to give my fake account 100 points. Better yet, I create ten fake accounts this way and give each of those 100 points so that I no longer need my ten original accounts (which are all in my real name, better delete those now).&lt;br /&gt;&lt;br /&gt;How to remedy this? There seems to be an audit program in place, where assurers are asked to contact other assurers to sanity-check past assurances. Eventually my fraudulent accounts will be discovered and traced back to my real identity (the ten accounts in my real name that were assured by honest assurers). I could then be held to the &lt;a href="https://www.cacert.org/policy/CAcertCommunityAgreement.php"&gt;community agreement&lt;/a&gt; which I agreed to when I signed up for the service.  The combination of government issued ID, face-to-face meetings, community vigilance, and legal agreements actually forms a pretty good deterrent security control against the described attack. In the end what CAcert is doing is not so different from what the commercial CAs are doing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; 2010/02/17: Looks like this same meme was &lt;a href="https://lists.cacert.org/wws/arc/cacert/2010-02/msg00012.html"&gt;recently discussed&lt;/a&gt; on the CAcert mailing list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-7292109755683734820?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/7292109755683734820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2010/02/community-generated-trust.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/7292109755683734820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/7292109755683734820'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2010/02/community-generated-trust.html' title='Community generated trust'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oQfyyV5fZVQ/S3J6rjFk11I/AAAAAAAADUY/LgT1_D1MKEI/s72-c/cacert.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-1560302688398557065</id><published>2009-12-07T05:57:00.000-08:00</published><updated>2009-12-07T07:46:59.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM application toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM'/><title type='text'>SIM security and GSM security</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oQfyyV5fZVQ/Sx0jZ__MuQI/AAAAAAAADOs/XqJ_wf7WBGw/s1600-h/IPhone_keyboard_unblured.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 145px; height: 152px;" src="http://3.bp.blogspot.com/_oQfyyV5fZVQ/Sx0jZ__MuQI/AAAAAAAADOs/XqJ_wf7WBGw/s320/IPhone_keyboard_unblured.jpg" alt="" id="BLOGGER_PHOTO_ID_5412521256749414658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the old days the SIM was there to control access to the GSM network. A GSM &lt;a href="http://www.3gpp.org/ftp/specs/html-info/1111.htm"&gt;11.11&lt;/a&gt; compliant handset would forward an authentication request from the network to the SIM by issuing RUN_GSM_ALGORITHM command. And that was it. The threat landscape was clear (unauthenticated access to the network) and security of the solution relied entirely on the security of the SIM.&lt;br /&gt;&lt;br /&gt;The SIM application toolkit complicates things, however. A GSM &lt;a href="http://www.3gpp.org/ftp/specs/html-info/1114.htm"&gt;11.14&lt;/a&gt; compliant handset implements a complex protocol which involves polling multiple Java Card applets and message passing from and to the network and the GUI. If the handset correctly implements this protocol then SIM applets have a trusted interface to the user during so-called proactive SIM sessions. This means, for example that an application on the handset (a MIDlet, say) cannot interfere with the GUI during such sessions. (GSM 11.14 doesn't actually say that, but other ETSI standards such as ETSI 102 206 seem to rely on this.)&lt;br /&gt;&lt;br /&gt;Some weeks ago a &lt;a href="http://www.slashdot.org/story/09/11/21/2023200/First-Malicious-iPhone-Worm-In-the-Wild"&gt;worm targeting jailbroken iPhones&lt;/a&gt; &lt;a href="http://www.xs4all.nl/veiligheid/security.php"&gt;was discovered&lt;/a&gt;. The &lt;a href="http://www.apple.com/iphone/"&gt;iPhone&lt;/a&gt; (besides being a lot of other things) is a GSM handset which implements GSM 11.14 at some level. Big question is: is a jailbroken iPhone still a GSM 11.14 compliant hand set?&lt;br /&gt;&lt;br /&gt;With smart phone operating systems becoming more &lt;a href="http://www.android.com/"&gt;open&lt;/a&gt; (and users demanding control over them) this is getting more interesting. Perhaps a &lt;a href="http://www.computerworld.com.au/article/328811/vmware_developing_dual_os_smartphone_virtualisation?pp=1&amp;amp;fp=16&amp;amp;fpid=1"&gt;hypervised approach&lt;/a&gt; is the solution. In any case, it's not as simple as it used to be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-1560302688398557065?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/1560302688398557065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/12/sim-security-and-gsm-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1560302688398557065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1560302688398557065'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/12/sim-security-and-gsm-security.html' title='SIM security and GSM security'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oQfyyV5fZVQ/Sx0jZ__MuQI/AAAAAAAADOs/XqJ_wf7WBGw/s72-c/IPhone_keyboard_unblured.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-3805817903398278076</id><published>2009-11-18T05:38:00.000-08:00</published><updated>2009-11-24T01:48:45.829-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='context'/><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='road pricing'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Variable Road Pricing</title><content type='html'>We seem to be getting &lt;a href="http://www.verkeerenwaterstaat.nl/Images/ABVM-16125-v1-Wet_Kilometerprijs_definitief_13_november_2009_tcm195-266316.pdf"&gt;variable road pricing&lt;/a&gt; over here in the Netherlands. Which generates a lot of &lt;a href="http://www.telegraaf.nl/binnenland/5352719/__Staat_gluurt_mee__.html?pageNumber=1"&gt;discussion&lt;/a&gt;, of course. The Dutch ministry of transport has a nice &lt;a src="http://www.verkeerenwaterstaat.nl/onderwerpen/mobiliteit_en_bereikbaarheid/kilometerprijs/hoe_werkt_de_kilometerprijs/"&gt;high level overview&lt;/a&gt; including a diagram with some interfaces of the system:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oQfyyV5fZVQ/Swur3y75vLI/AAAAAAAADOM/1QbYJp3jH6Q/s1600/Kilometerprijs_tcm195-266527.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 195px;" src="http://2.bp.blogspot.com/_oQfyyV5fZVQ/Swur3y75vLI/AAAAAAAADOM/1QbYJp3jH6Q/s320/Kilometerprijs_tcm195-266527.gif" alt="" id="BLOGGER_PHOTO_ID_5407604752642587826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I haven't made a detailed security analysis of this system, obviously. But couldn't one simply block the incoming GPS signal (say, using a &lt;a href="http://boingboing.net/2009/07/30/gps-jammer-plugs-int.html"&gt;GPS jammer&lt;/a&gt;). Better yet, why not &lt;i&gt;relay&lt;/i&gt; the signal from a stationary GPS receiver at home to your on board unit?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-3805817903398278076?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/3805817903398278076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/11/variable-road-pricing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3805817903398278076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3805817903398278076'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/11/variable-road-pricing.html' title='Variable Road Pricing'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oQfyyV5fZVQ/Swur3y75vLI/AAAAAAAADOM/1QbYJp3jH6Q/s72-c/Kilometerprijs_tcm195-266527.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-3786713920654852050</id><published>2009-10-27T03:02:00.001-07:00</published><updated>2009-10-28T08:40:05.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social network'/><category scheme='http://www.blogger.com/atom/ns#' term='rsa'/><category scheme='http://www.blogger.com/atom/ns#' term='information card'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='epassport'/><title type='text'>RSA Conference Europe 2009</title><content type='html'>I attended &lt;a href="http://www.rsaconference.com/2009/europe/"&gt;RSA Conference Europe 2009&lt;/a&gt; in London the other week, where I gave a presentation on &lt;a href="http://martijno.blogspot.com/2009/02/epassport-helps-fight-online-identity.html"&gt;something I blogged about before&lt;/a&gt; (combining ePassports and Information Card, a project sponsored by &lt;a href="http://nlnet.nl/"&gt;NLnet&lt;/a&gt;). My talk was scheduled for the very last slot on the very last day, which means I had plenty of time to go and listen to the other talks. Some of my impressions are below.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_2355891"&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sec-305oostdijkv03-091027050034-phpapp02&amp;amp;stripped_title=reusing-existing-pkis-for-online-identity-management"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sec-305oostdijkv03-091027050034-phpapp02&amp;amp;stripped_title=reusing-existing-pkis-for-online-identity-management" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I checked out the booths of the conference's sponsors and noticed a relative large number of authentication factor vendors (&lt;a href="http://www.gi-de.com/"&gt;G&amp;amp;D&lt;/a&gt;, &lt;a href="http://www.kobil.com/de/"&gt;Kobil&lt;/a&gt;, &lt;a href="http://smspasscode.com/"&gt;smspasscode.com&lt;/a&gt;) and of course the big guys (&lt;a href="http://www.rsa.com/"&gt;RSA Security&lt;/a&gt;, &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://qualys.com/"&gt;Qualys&lt;/a&gt;, &lt;a href="http://www.ca.com/"&gt;CA&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;As for the presentations, there were at least 4 different tracks, and all talks had catchy titles. Very difficult to choose from. There were a lot of &amp;quot;securing the cloud&amp;quot; talks. I've heard people claim that 'cloud==deperimeterization'. Others claim that 'cloud==virtualization', and yet others claim that 'cloud==SaaS', and even 'cloud==social networks'. Most of the talks dealt with managing the risks of enterprise cloud computing (sharing resources is risky, you'll need good SLA contracts for that). I especially liked the &lt;i&gt;Collateral Hacking&lt;/i&gt; panel session which focused on the risk presented by totally unrelated parties you happen to share services with.&lt;br /&gt;&lt;br /&gt;There were a few hacking-presentations. I really enjoyed &lt;a href="http://www.truesec.com"&gt;Bj&amp;ouml;rn Brolin and Marcus Murray's&lt;/a&gt; &lt;i&gt;Breaking the Windows driver signing model&lt;/i&gt;. Great live reversing demo. Bottom line: Running an anti-virus suite with badly engineered (yet Microsoft signed) kernel drivers can actually render your PC &lt;i&gt;less&lt;/i&gt; secure from malware.&lt;br /&gt;&lt;br /&gt;Talking about anti-virus software vendors. Both McAfee's &lt;a href="http://www.mcafee.com/"&gt;Anthony Bettini&lt;/a&gt;'s and Kaspersky labs' &lt;a href="http://www.kaspersky.com/"&gt;Stefan Tanase&lt;/a&gt;'s presentation focused on threats from social networks (personalized spam, Twitter based C&amp;amp;C, targeted attacks based on synchronization between personal and enterprise information). Anthony had the best sound-bites IMHO: 'open-sourcing one's life', 'keep your enemies closer'. Stefan showed a glimpse of crawler based technology that Kaspersky's R&amp;D team in Romania is working on.&lt;br /&gt;&lt;br /&gt;More targeted social network threats came from &lt;a href="http://www.bhconsulting.ie/"&gt;Brian Honan&lt;/a&gt; who introduced the audience to some of the tools of the trade, notable &lt;a href="http://pipl.com/"&gt;pipl.com&lt;/a&gt; and &lt;a href="http://www.paterva.com/"&gt;Maltego&lt;/a&gt;. Interestingly, in Ireland, anyone can request everyone else's birth certificate (apparently for reasons of genealogical research), &lt;i&gt;and&lt;/i&gt; the only thing needed to request a driver's license or passport in Ireland is a birth certificate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt;'s keynote was delivered by Amy Barzdukas. She made some valid points about the perception of privacy and security by the average computer user. The FUD (initially directed at Google: Chrome's auto-completing address bar will send packets to Google, OMG, better stick with IE8) was a little too much for my taste. They're going to make it more difficult to download and install third party software through IE because of the fake virus scanner scams.&lt;br /&gt;&lt;br /&gt;The keynote by special agent Mularski of the &lt;a href="http://www.fbi.gov/"&gt;FBI&lt;/a&gt; and Andy Auld of &lt;a href="http://www.soca.gov.uk/"&gt;SOCA&lt;/a&gt; about the &lt;a href="http://rbnexploit.blogspot.com/"&gt;Russian Business Network&lt;/a&gt; was so secret that I cannot blog about it. The keynote by Dave Hansen of &lt;a href="http://www.ca.com/"&gt;CA&lt;/a&gt; on content-aware extensions of RBAC was pretty interesting and included &lt;a href="http://www.imdb.com/title/tt0118655/"&gt;another secret agent&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.identitymusings.net"&gt;Andrew Nash&lt;/a&gt; of &lt;a href="http://www.paypal.com"&gt;PayPal&lt;/a&gt; gave an insightful presentation on the consumer identity bootstrap problem. After explained the clever &lt;a href="http://www.identitymusings.net/wordpress/?p=19"&gt;big bang/steady state&lt;/a&gt; analogy he showed just how big the problem is. What's the most important feature an Identity Provider should offer to its users? Right. &lt;i&gt;Anonymity&lt;/i&gt;. The other PayPal presentation was by &lt;a href="http://www.x.com/"&gt;Hadi Nahari&lt;/a&gt; who put forward some requirements (or rather, desirements) for identity in mobile computing. It appears that PayPal is trying to get some of these ideas into the &lt;a href="http://www.globalplatform.org/"&gt;Global Platform&lt;/a&gt; specifications.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.irawinkler.com/"&gt;Ira Winkler&lt;/a&gt; went on a one-hour rant over the use of the term &lt;i&gt;information warfare&lt;/i&gt;. Funny stuff, except for the one Estonian guy in the audience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-3786713920654852050?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/3786713920654852050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/10/rsa-conference-europe-2009.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3786713920654852050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3786713920654852050'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/10/rsa-conference-europe-2009.html' title='RSA Conference Europe 2009'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-7631197260979297521</id><published>2009-10-19T02:47:00.000-07:00</published><updated>2009-10-19T04:52:42.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='information card'/><category scheme='http://www.blogger.com/atom/ns#' term='smart card'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM application toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='epassport'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM'/><title type='text'>Two ideas I could have submitted to the SIMagine contest</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_oQfyyV5fZVQ/Stw_Ifhl9KI/AAAAAAAADOA/6dOktrU1USw/s1600-h/SIMagine2010.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 170px; height: 88px;" src="http://1.bp.blogspot.com/_oQfyyV5fZVQ/Stw_Ifhl9KI/AAAAAAAADOA/6dOktrU1USw/s320/SIMagine2010.png" alt="" id="BLOGGER_PHOTO_ID_5394255868816913570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here are two ideas I could have submitted to the &lt;a href="http://www.simagine.info/"&gt;SIMagine&lt;/a&gt; contest, but didn't. ;)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Info Cards securely stored in your SIM&lt;/b&gt;: &lt;a href="http://www.xing.com/profile/Florian_vanKeulen"&gt;Florian van Keulen&lt;/a&gt;, one of &lt;a href="http://maarten.wegdam.name/2009/10/16/mobile-user-centric-identity-through-information-cards/"&gt;Maarten's&lt;/a&gt; students did a &lt;a href="http://www.novay.nl/okb/publicaties/mobile-user-centric-identity-through-information-cards/7248"&gt;project&lt;/a&gt; on different architectures for implementing Info Card on mobile devices. One of the options that Florian investigated was to store the Info Cards on the SIM. A handset resident application would then facilitate communication between the Card Selector on a different platform (a PC in an Internet cafe) and the SIM through Bluetooth.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Turning an existing contactless smart card into a pre-paid mobile SIM application&lt;/b&gt;: You're not supposed to be able to clone an &lt;a href="http://blogs.zdnet.com/Ou/?p=394"&gt;ePassport&lt;/a&gt; or &lt;a href="http://www.blogger.com/www.mastercard.com/paypass/"&gt;contactless&lt;/a&gt; &lt;a href="http://usa.visa.com/personal/cards/paywave/"&gt;creditcard&lt;/a&gt;, of course. But you can do something else. You can pre-record some challenge-response pairs using an NFC handset and store these in an application on the secure element (SE, usually the SIM card) of the handset. If the application can authenticate itself to an inspection system (a POS terminal) then the handset can be used instead of the original contactless card. This improves convenience: one device instead of multiple cards, you now have a GUI. As for security: You can limit the number of challenge-response pairs, you can time-stamp the challenge-response pairs (the SE can connect to some trusted time server during enrollment), etc.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Oh well, deadline expired, never mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-7631197260979297521?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/7631197260979297521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/10/two-ideas-i-could-have-submitted-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/7631197260979297521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/7631197260979297521'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/10/two-ideas-i-could-have-submitted-to.html' title='Two ideas I could have submitted to the SIMagine contest'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oQfyyV5fZVQ/Stw_Ifhl9KI/AAAAAAAADOA/6dOktrU1USw/s72-c/SIMagine2010.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-1216872123770193939</id><published>2009-10-01T05:07:00.001-07:00</published><updated>2009-10-02T04:31:08.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile PKI'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM application toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='SIM'/><title type='text'>Mobile PKI</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oQfyyV5fZVQ/SsTEic8wbkI/AAAAAAAADLI/Ep72RQLn_a0/s1600-h/nokia-6300-most-popular-mobile-phone.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 101px; height: 125px;" src="http://4.bp.blogspot.com/_oQfyyV5fZVQ/SsTEic8wbkI/AAAAAAAADLI/Ep72RQLn_a0/s320/nokia-6300-most-popular-mobile-phone.jpg" alt="" id="BLOGGER_PHOTO_ID_5387647150407577154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6W6X-4V7MH03-N&amp;amp;_user=499905&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;_docanchor=&amp;amp;view=c&amp;amp;_searchStrId=1031210827&amp;amp;_rerunOrigin=google&amp;amp;_acct=C000024538&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=499905&amp;amp;md5=430c51ba462842df1990184bed5dacdd"&gt;Mobile PKI&lt;/a&gt;, also known as &lt;a href="http://www.wpki.net/index_eng.html"&gt;Wireless PKI&lt;/a&gt; (and a lot of other names such as Mobile Secure Signature Service, Secure Signature Creation Device, ...) is a technology which allows users to place &lt;a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:31999L0093:EN:HTML"&gt;electronic signatures&lt;/a&gt; with their cell phone. This can be used for applications that run on the phone, but also for applications that run on other platforms (the user's computer connected to the Internet, for instance). One could use this, for example, as an authentication mechanism at a relying party. In the latter scenario your phone is a "something-you-have" token which provides extra security as an attacker would have to manipulate two separate channels to mount an attack. Before placing a signature, the cell phone will ask the user for his or her PIN.&lt;br /&gt;&lt;br /&gt;The SIM card inside the cell phone plays a central role in Mobile PKI. Actually, the obvious way to implement Mobile PKI is through a so-called &lt;a href="http://www.google.nl/search?q=GSM+11.14+filetype%3Apdf"&gt;SIM Application Toolkit (SAT) applet&lt;/a&gt; installed on the SIM card. SAT has some really cool features that make things easy, both for the mobile operator and for the user:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They can be installed over the air (OTA) to an already deployed SIM  by the mobile operator, without disturbing the user&lt;/li&gt;&lt;li&gt;They can add extra (basic menu-based) features to the GUI&lt;/li&gt;&lt;li&gt;They can react to events such as selection of menus by the user or incoming SMSs sent by the mobile operator&lt;/li&gt;&lt;/ul&gt;This makes Mobile PKI a pretty secure solution:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The application resides on a tamper resistant smart card&lt;/li&gt;&lt;li&gt;Most handset manufacturers will make sure that there's a trusted path from the phone's keyboard to SAT applications (the malware problem seems to still  be small for the mobile platform)&lt;/li&gt;&lt;li&gt;The separate channel advantage was already mentioned above&lt;/li&gt;&lt;/ul&gt;It's also user-friendlier when compared to other authentication solutions such as smart cards, PKI tokens, and one-time-password SMSs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The PIN is the same for each and every transaction&lt;/li&gt;&lt;li&gt;There's no need to install software on the user's PC&lt;/li&gt;&lt;li&gt;There's no need to read and type challenges or responses&lt;/li&gt;&lt;li&gt;Most users will not forget or leave their cell phone unattended, and most will notice and report a missing or stolen phone&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Mobile PKI has been &lt;a href="http://portal.etsi.org/docbox/EC_Files/EC_Files/tr_102206v010103p.pdf"&gt;standardized&lt;/a&gt; by ETSI around 2002/2003. Also &lt;a href="http://www.commoncriteriaportal.org/"&gt;Common Criteria&lt;/a&gt; protection profiles for &lt;a href="http://www.commoncriteriaportal.org/files/ppfiles/pp0006b.pdf"&gt;Secure Signature&lt;/a&gt; &lt;a href="http://www.commoncriteriaportal.org/files/epfiles/cible2002_12.pdf"&gt;Creation Device&lt;/a&gt;s have existed since 2001. So the technology is pretty old. It has found its way to end-customers in some countries, most notably &lt;a href="http://www.reuters.com/article/pressRelease/idUS125351+25-Jan-2008+PRN20080125"&gt;Turkey&lt;/a&gt; and more recently to &lt;a href="http://www.valimo.com/news_and_events/16-02-2009/valimo-and-telenor-sweden-collaborate-mobile-authentication-technology"&gt;the&lt;/a&gt; &lt;a href="http://www.valimo.com/news_and_events/28-07-2009/lattelecom-launches-mobile-id-services-latvia-based-valimo-s-market-leadi"&gt;Nordic&lt;/a&gt; &lt;a href="http://www.valimo.com/news_and_events/24-05-2006/valimo-wireless-powers-teliasonera-finland-s-mobile-identification-servic"&gt;countries&lt;/a&gt; (in Finland you can apparently even &lt;a href="http://youridonline.com/webfm_send/26"&gt;add your government issued eID to a SIM card&lt;/a&gt;). Most of &lt;a href="http://www.valimo.com/news_and_events/12-02-2009/oberthur-technologies-announces-enhanced-secure-transaction-capabilities-"&gt;the&lt;/a&gt; &lt;a href="http://www.gi-de.com/pls/portal/maia.display_custom_items.DOWNLOAD_SEEALSO_FILE?p_ID=5563"&gt;SIM&lt;/a&gt; &lt;a href="http://www.gemalto.com/press/IntheNews/download/2007/11-21-2007-valimo.pdf"&gt;manufacturers&lt;/a&gt; and &lt;a href="http://www.ericsson.com/ericsson/press/releases/20070213-1104687.shtml"&gt;technology&lt;/a&gt; providers offer Mobile PKI as an option to their customers (the mobile operators).  I &lt;a href="https://365.rsaconference.com/docs/DOC-1172"&gt;wonder&lt;/a&gt; why this hasn't caught on here in &lt;a href="http://www.justlanded.com/english/Netherlands/Netherlands-Guide/Telephone-Internet/Mobile-operators"&gt;the Netherlands&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-1216872123770193939?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/1216872123770193939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/10/mobile-pki.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1216872123770193939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1216872123770193939'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/10/mobile-pki.html' title='Mobile PKI'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oQfyyV5fZVQ/SsTEic8wbkI/AAAAAAAADLI/Ep72RQLn_a0/s72-c/nokia-6300-most-popular-mobile-phone.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-1811269920883896197</id><published>2009-08-13T02:17:00.000-07:00</published><updated>2009-08-13T04:48:06.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skimming'/><category scheme='http://www.blogger.com/atom/ns#' term='payment'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='fraud'/><title type='text'>Anti-skimming measures</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oQfyyV5fZVQ/SoPalQ3fVXI/AAAAAAAADH4/tt0hlvsLCrM/s1600-h/TinQ_anti_skimming_POS.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 335px; height: 400px;" src="http://2.bp.blogspot.com/_oQfyyV5fZVQ/SoPalQ3fVXI/AAAAAAAADH4/tt0hlvsLCrM/s400/TinQ_anti_skimming_POS.jpg" alt="" id="BLOGGER_PHOTO_ID_5369375514473485682" border="0" /&gt;&lt;/a&gt; Someone glued small pieces of metal to the PIN entry pad at the POS of my &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=nl&amp;amp;geocode=&amp;amp;q=tinq+hengelo,+hengelo,+netherlands&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=27.699934,62.402344&amp;amp;ie=UTF8&amp;amp;ll=52.281454,6.841607&amp;amp;spn=0.00061,0.001904&amp;amp;t=h&amp;amp;z=19&amp;amp;iwloc=D"&gt;local self-service gas station&lt;/a&gt;. It must have been one of the good guys, because it says "&lt;a href="http://translate.google.com/translate_t#nl|en|veiligheidsstrip"&gt;veiligheidsstrip&lt;/a&gt;&amp;quot; at the bottom.&lt;br /&gt;&lt;br /&gt;Certainly raises security awareness amongst customers...&lt;br /&gt;&lt;br /&gt;(Until they get used to it and the bad guys manage to produce mini cameras that look like small pieces of metal.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-1811269920883896197?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/1811269920883896197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/08/anti-skimming-measures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1811269920883896197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1811269920883896197'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/08/anti-skimming-measures.html' title='Anti-skimming measures'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oQfyyV5fZVQ/SoPalQ3fVXI/AAAAAAAADH4/tt0hlvsLCrM/s72-c/TinQ_anti_skimming_POS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-2890769242728040982</id><published>2009-06-20T05:16:00.001-07:00</published><updated>2009-07-20T01:32:37.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pki'/><category scheme='http://www.blogger.com/atom/ns#' term='semantics'/><category scheme='http://www.blogger.com/atom/ns#' term='epassport'/><category scheme='http://www.blogger.com/atom/ns#' term='certificates'/><title type='text'>How to trust Country Signing Certificates</title><content type='html'>I've collected a number of &lt;a href="http://jmrtd.org/csca/"&gt;country signing (public key) certificates&lt;/a&gt; of different ePassport issuing countries who have put their certificates online. Most of these were brought to my attention by &lt;a href="http://www.google.com/alerts"&gt;Google's alert service&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The global &lt;a href="http://www.icao.int/"&gt;ICAO&lt;/a&gt; PKI for signing ePassports is actually a forrest of many national PKIs. And each national PKI is only 2 levels deep (depending on where you start counting):&lt;ul&gt;&lt;li&gt;CSCA: Country Signing Certificate Authority&lt;/li&gt;&lt;li&gt;DSCA: Document Signing Certificate Authority&lt;/li&gt;&lt;li&gt;AA: Active Authentication "certificate" (which really is not part of the PKI, as this is not a certificate but a raw public key, signed implicitly in the security document of the ePassport)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;All of this becomes more complex now that we are moving towards Extended Access Control, but the fact remains that the lack of a central trusted CA makes it difficult to bootstrap trust. ICAO has proposed two alternatives:&lt;ul&gt;&lt;li&gt;The central ICAO Public Key Directory (&lt;a href="http://www2.icao.int/en/MRTD/Pages/icaoPKD.aspx"&gt;PKD&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Country cross signing of CSCs&lt;/li&gt;&lt;/ul&gt;The first alternative is really an online facility which issues claims about (document) signers. The usual drawbacks apply: single point of failure, cost of maintaining infrastructure, etc. The second alternative involves having each country (or at least as many countries as possible) sign each other's certificates.&lt;br /&gt;&lt;br /&gt;Is it possible to have a central CA instead? Some of the government Web sites where I (or rather, Google) found the CSCA certificates are protected using SSL, at least the &lt;a href="https://www.bprbzk.nl/echtheidskenmerken/csca/"&gt;Dutch site&lt;/a&gt; is (yes, I know, the certificate has expired, but I downloaded the CSCA certificate before the expiration date of the server certificate). I could have recorded the SSL transaction while downloading that CSCA certificate and I could have made that part of the CSCA certificate itself. Unfortunately, the commercial CA (in this case Verisign) which signed the server key doesn't make claims about the validity of certificate files hosted at protected servers. Sometimes the Web is just not &lt;a href="http://en.wikipedia.org/wiki/Semantic_Web"&gt;semantic&lt;/a&gt; enough.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; (July 2009): The certificate of &lt;a href="https://www.bprbzk.nl/echtheidskenmerken/csca/"&gt;bprbzk.nl&lt;/a&gt; was renewed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-2890769242728040982?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/2890769242728040982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/06/how-to-trust-country-signing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2890769242728040982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2890769242728040982'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/06/how-to-trust-country-signing.html' title='How to trust Country Signing Certificates'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-4920707822318928625</id><published>2009-06-19T01:44:00.001-07:00</published><updated>2009-06-19T07:06:47.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pki'/><category scheme='http://www.blogger.com/atom/ns#' term='graceful degradation'/><category scheme='http://www.blogger.com/atom/ns#' term='certificates'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Intermediate certificates in my local trust store</title><content type='html'>The trust store used by my Firefox browser (on Windows) contains a lot of root CA certificates, &lt;i&gt;and also some intermediate&lt;/i&gt; CA certificates (maybe I imported them, maybe my sysadmin did, maybe they came with my browser, but they're there). The root CA certificates are self-signed, the intermediate CA certificates are signed using another certificate from my trust store.&lt;br /&gt;&lt;br /&gt;Other browser's trust stores that I checked: &lt;a href="http://curl.haxx.se/"&gt;curl&lt;/a&gt;'s (usually located at &lt;code&gt;/usr/share/curl/curl-ca-bundle.crt&lt;/code&gt;) and &lt;a href="http://java.sun.com/javase/"&gt;Java&lt;/a&gt;'s (usually located at &lt;code&gt;$JRE/lib/security/cacerts&lt;/code&gt; and accessed with &lt;code&gt;keytool -keystore cacerts -storepass changeit -list&lt;/code&gt;) do not contain intermediate certificates (at least not the one I'm using below). They do contain the usual list of root certificates.&lt;br /&gt;&lt;br /&gt;My Web server's SSL certificate is signed using one of those intermediate certificates. Here's what my chain looks like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;GTE Cybertrust Global Root&lt;/i&gt; is signed by &lt;i&gt;GTE Cybertrust Global Root&lt;/i&gt; (I saved this certificate to a file called &lt;code&gt;global.crt&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Cybertrust Educational CA&lt;/i&gt; is signed by &lt;i&gt;GTE Cybertrust Global Root&lt;/i&gt; (I saved this certificate to a file called &lt;code&gt;educational.crt&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;My server's certificate is signed by &lt;i&gt;Cybertrust Educational CA&lt;/i&gt; (I saved this certificate to a file called &lt;code&gt;myserver.crt&lt;/code&gt;)&lt;/li&gt;&lt;/ul&gt;To verify the signature by hand using &lt;a href="http://www.openssl.org/"&gt;openssl&lt;/a&gt; I can use:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;openssl verify -CAfile global.crt -untrusted educational.crt myserver.crt&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;When I first installed the certificate for my Web server (an &lt;a href="http://httpd.apache.org/"&gt;Apache httpd&lt;/a&gt; 2.0 server), I merely configured my own certificate (and corresponding private key):&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;SSLCertificateFile myserver.crt&lt;/code&gt;&lt;/blockquote&gt;This worked fine in my Firefox, which I used to test this server.&lt;br /&gt;&lt;br /&gt;But curl refuses (unless I use the &lt;code&gt;--insecure&lt;/code&gt; or the &lt;code&gt;--cacert&lt;/code&gt; option with a concatenation of the two Cybertrust certificates). Apparently the Web server needs to send the intermediate CA certificate as well (and possibly also the root CA certificate). Here's the correct setup:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;SSLCertificateFile myserver.crt&lt;br /&gt;SSLCertificateChainFile educational.crt&lt;br /&gt;SSLCACertificateFile global.crt&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;While having intermediate certificates in you local trust store doesn't make you less secure, if you're testing your Web server setup it's a good idea to also test it with a minimal trust store. In fact, I found that the best way to test your server's SSL settings is using openssl: &lt;blockquote&gt;&lt;code&gt;openssl s_client -host myserver.com -port 443&lt;/code&gt;&lt;/blockquote&gt;This doesn't use a trust store at all. It shows the certificate chain and gives either an error 20 (unable to get local issuer certificate, in case the server only send the server and intermediate certificates), or an error 19 (self signed certificate in chain, in case the server also sent the root certificate). (Both errors are expected, other errors indicate something may be wrong.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-4920707822318928625?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/4920707822318928625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/06/intermediate-certificates-in-my-local.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/4920707822318928625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/4920707822318928625'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/06/intermediate-certificates-in-my-local.html' title='Intermediate certificates in my local trust store'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-4310976916900568559</id><published>2009-06-17T07:03:00.000-07:00</published><updated>2009-06-17T07:40:01.459-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='openaselect'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><title type='text'>OpenID with OpenASelect - Part 4</title><content type='html'>Finally, here's the &lt;code&gt;oa.xml&lt;/code&gt; (yes, it's big, I know):&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;?xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;!DOCTYPE&amp;nbsp;oa-server&lt;/code&gt;&lt;br /&gt;&lt;code&gt;[&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!ENTITY&amp;nbsp;server&amp;nbsp;&amp;quot;ldap://ldapserver:389&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!ENTITY&amp;nbsp;base&amp;nbsp;&amp;quot;OU=Institute,DC=corporate,DC=domain,DC=com&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!ENTITY&amp;nbsp;user&amp;nbsp;&amp;quot;user@domain.com&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!ENTITY&amp;nbsp;password&amp;nbsp;&amp;quot;changeme&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;]&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;oa-server&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;Server&amp;nbsp;Configuration&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;server&amp;nbsp;id=&amp;quot;openid.domain.com&amp;quot;&amp;nbsp;friendlyname=&amp;quot;Institute&amp;nbsp;OpenID&amp;nbsp;Server&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;organization&amp;nbsp;id=&amp;quot;Institute&amp;nbsp;OpenID&amp;quot;&amp;nbsp;friendlyname=&amp;quot;Institute&amp;nbsp;OpenID&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/server&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;Engine&amp;nbsp;Configuration&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;crypto&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;message_digest&amp;nbsp;algorithm=&amp;quot;SHA1&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;random_generator&amp;nbsp;algorithm=&amp;quot;SHA1PRNG&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/crypto&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;sessionfactory&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.session.memory.MemorySessionFactory&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;expire&amp;gt;900&amp;lt;/expire&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;interval&amp;gt;60&amp;lt;/interval&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;max&amp;gt;100&amp;lt;/max&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/sessionfactory&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;tgtfactory&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.tgt.memory.MemoryTGTFactory&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;expire&amp;gt;3600&amp;lt;/expire&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;interval&amp;gt;60&amp;lt;/interval&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;max&amp;gt;100&amp;lt;/max&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/tgtfactory&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;User&amp;nbsp;Provisioning&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;userfactory&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.user.provisioning.ProvisioningFactory&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;main&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;translator&amp;gt;standard&amp;lt;/translator&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/main&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;translator&amp;nbsp;id=&amp;quot;standard&amp;quot;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.user.provisioning.translator.standard.StandardTranslator&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;main&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;externalstorage&amp;gt;ext_jndi&amp;lt;/externalstorage&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;profile&amp;gt;jndi&amp;lt;/profile&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/main&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;profile&amp;nbsp;id=&amp;quot;jndi&amp;quot;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.user.provisioning.translator.standard.StandardProfile&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;account&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;enabled&amp;nbsp;default=&amp;quot;true&amp;quot;&amp;nbsp;field=&amp;quot;userPrincipalName&amp;quot;&amp;nbsp;converter=&amp;quot;exist&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;authentication&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;method&amp;nbsp;id=&amp;quot;JNDIPassword&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;registered&amp;nbsp;default=&amp;quot;true&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/method&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/authentication&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/account&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;convertermanager&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;converter&amp;nbsp;id=&amp;quot;exist&amp;quot;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.user.provisioning.translator.standard.converter.exist.ExistConverter&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/convertermanager&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/profile&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/translator&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;storagemanager&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;storage&amp;nbsp;id=&amp;quot;ext_jndi&amp;quot;&amp;nbsp;class=&amp;quot;.external.jndi.JNDIExternalStorage&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/storage&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/storagemanager&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/userfactory&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;attributegatherer&amp;nbsp;id=&amp;quot;ax_attribgather&amp;quot;&amp;nbsp;friendlyname=&amp;quot;Gatherer&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;AX&amp;nbsp;axschema.org&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;processor&amp;nbsp;id=&amp;quot;axschemaorg_jndi&amp;quot;&amp;nbsp;friendlyname=&amp;quot;JNDI&amp;nbsp;axschema.org&amp;nbsp;AX&amp;nbsp;Attribute&amp;nbsp;Gatherer&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.attribute.gather.processor.jndi.JNDIGatherer&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;company&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;description&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;givenName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;l&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mobile&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;name&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postOfficeBox&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sn&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;telephoneNumber&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;title&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;wWWHomePage&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/namePerson/friendly&amp;quot;&amp;nbsp;ext=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/namePerson&amp;quot;&amp;nbsp;ext=&amp;quot;name&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/namePerson/prefix&amp;quot;&amp;nbsp;ext=&amp;quot;title&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/namePerson/first&amp;quot;&amp;nbsp;ext=&amp;quot;givenName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/namePerson/last&amp;quot;&amp;nbsp;ext=&amp;quot;sn&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/company/name&amp;quot;&amp;nbsp;ext=&amp;quot;company&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/company/title&amp;quot;&amp;nbsp;ext=&amp;quot;description&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/phone/default&amp;quot;&amp;nbsp;ext=&amp;quot;telephoneNumber&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/phone/cell&amp;quot;&amp;nbsp;ext=&amp;quot;mobile&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/postalAddress/business&amp;quot;&amp;nbsp;ext=&amp;quot;postOfficeBox&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/city/business&amp;quot;&amp;nbsp;ext=&amp;quot;l&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/country/business&amp;quot;&amp;nbsp;ext=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/postalCode/business&amp;quot;&amp;nbsp;ext=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/email&amp;quot;&amp;nbsp;ext=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://axschema.org/contact/web/default&amp;quot;&amp;nbsp;ext=&amp;quot;wWWHomePage&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/processor&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;AX&amp;nbsp;openid.net/schema&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;processor&amp;nbsp;id=&amp;quot;openidnet_jndi&amp;quot;&amp;nbsp;friendlyname=&amp;quot;JNDI&amp;nbsp;axschema.org&amp;nbsp;AX&amp;nbsp;Attribute&amp;nbsp;Gatherer&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.attribute.gather.processor.jndi.JNDIGatherer&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;company&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;description&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;givenName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;l&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mobile&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;name&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postOfficeBox&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sn&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;telephoneNumber&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;title&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;wWWHomePage&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/namePerson/prefix&amp;quot;&amp;nbsp;ext=&amp;quot;title&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/namePerson/first&amp;quot;&amp;nbsp;ext=&amp;quot;givenName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/namePerson/last&amp;quot;&amp;nbsp;ext=&amp;quot;sn&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/namePerson/friendly&amp;quot;&amp;nbsp;ext=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/phone/default&amp;quot;&amp;nbsp;ext=&amp;quot;telephoneNumber&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/postaladdress/business&amp;quot;&amp;nbsp;ext=&amp;quot;postOfficeBox&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/city/business&amp;quot;&amp;nbsp;ext=&amp;quot;l&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/country/business&amp;quot;&amp;nbsp;ext=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/postalcode/business&amp;quot;&amp;nbsp;ext=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/internet/email&amp;quot;&amp;nbsp;ext=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/contact/web/default&amp;quot;&amp;nbsp;ext=&amp;quot;wWWHomepage&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/company/name&amp;quot;&amp;nbsp;ext=&amp;quot;company&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://openid.net/schema/company/title&amp;quot;&amp;nbsp;ext=&amp;quot;description&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/processor&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;AX&amp;nbsp;schema.openid.net&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;processor&amp;nbsp;id=&amp;quot;schemaopenidnet_jndi&amp;quot;&amp;nbsp;friendlyname=&amp;quot;JNDI&amp;nbsp;axschema.org&amp;nbsp;AX&amp;nbsp;Attribute&amp;nbsp;Gatherer&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.attribute.gather.processor.jndi.JNDIGatherer&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;company&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;description&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;givenName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;l&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mobile&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;name&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postOfficeBox&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sn&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;telephoneNumber&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;title&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;wWWHomePage&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/namePerson/prefix&amp;quot;&amp;nbsp;ext=&amp;quot;title&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/namePerson/first&amp;quot;&amp;nbsp;ext=&amp;quot;givenName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/namePerson/last&amp;quot;&amp;nbsp;ext=&amp;quot;sn&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/namePerson/friendly&amp;quot;&amp;nbsp;ext=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/phone/default&amp;quot;&amp;nbsp;ext=&amp;quot;telephoneNumber&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/postaladdress/business&amp;quot;&amp;nbsp;ext=&amp;quot;postOfficeBox&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/city/business&amp;quot;&amp;nbsp;ext=&amp;quot;l&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/country/business&amp;quot;&amp;nbsp;ext=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/postalcode/business&amp;quot;&amp;nbsp;ext=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/internet/email&amp;quot;&amp;nbsp;ext=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/contact/web/default&amp;quot;&amp;nbsp;ext=&amp;quot;wWWHomepage&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/company/name&amp;quot;&amp;nbsp;ext=&amp;quot;company&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://schema.openid.net/company/title&amp;quot;&amp;nbsp;ext=&amp;quot;description&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/processor&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;AX&amp;nbsp;verify.sxip.com&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;processor&amp;nbsp;id=&amp;quot;sxip_jndi&amp;quot;&amp;nbsp;friendlyname=&amp;quot;JNDI&amp;nbsp;axschema.org&amp;nbsp;AX&amp;nbsp;Attribute&amp;nbsp;Gatherer&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.attribute.gather.processor.jndi.JNDIGatherer&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;http://verify.sxip.com/schema/verifiedEmail&amp;quot;&amp;nbsp;ext=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/processor&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;SREG&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;processor&amp;nbsp;id=&amp;quot;sreg_jndi&amp;quot;&amp;nbsp;friendlyname=&amp;quot;JNDI&amp;nbsp;SREG&amp;nbsp;Attribute&amp;nbsp;Gatherer&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.attribute.gather.processor.jndi.JNDIGatherer&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;name&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/gather&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;nickname&amp;quot;&amp;nbsp;ext=&amp;quot;sAMAccountName&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;email&amp;quot;&amp;nbsp;ext=&amp;quot;mail&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;fullname&amp;quot;&amp;nbsp;ext=&amp;quot;name&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;postcode&amp;quot;&amp;nbsp;ext=&amp;quot;postalCode&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;map&amp;nbsp;int=&amp;quot;country&amp;quot;&amp;nbsp;ext=&amp;quot;c&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/processor&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/attributegatherer&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;attributerelease&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.attribute.release.configuration.ConfigurationFactory&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;policy&amp;nbsp;id=&amp;quot;releasepolicy.1&amp;quot;&amp;nbsp;friendlyname=&amp;quot;Release&amp;nbsp;Policy&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attribute&amp;nbsp;name=&amp;quot;*&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/policy&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/attributerelease&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;Business&amp;nbsp;Logic&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;requestorpoolfactory&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.requestor.configuration.ConfigurationFactory&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pool&amp;nbsp;id=&amp;quot;requestorpool.1&amp;quot;&amp;nbsp;friendlyname=&amp;quot;OpenID&amp;nbsp;Requestor&amp;nbsp;Pool&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;authentication&amp;nbsp;forced=&amp;quot;false&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;profile&amp;nbsp;id=&amp;quot;authentication.openid&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/authentication&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;attributerelease&amp;nbsp;policy=&amp;quot;releasepolicy.1&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;requestors&amp;nbsp;type=&amp;quot;sp&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;requestor&amp;nbsp;id=&amp;quot;openid&amp;quot;&amp;nbsp;friendlyname=&amp;quot;OpenID&amp;nbsp;requestor&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/requestors&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/pool&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/requestorpoolfactory&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;authentication&amp;nbsp;class=&amp;quot;com.alfaariss.oa.engine.authentication.configuration.ConfigurationFactory&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;profile&amp;nbsp;id=&amp;quot;authentication.openid&amp;quot;&amp;nbsp;friendlyname=&amp;quot;Login&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;method&amp;nbsp;id=&amp;quot;JNDIPassword&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/profile&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/authentication&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;Web&amp;nbsp;SSO&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;websso&amp;nbsp;single_sign_on=&amp;quot;true&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cookie&amp;nbsp;domain=&amp;quot;domain.com&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;view&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;profile_selection&amp;nbsp;path=&amp;quot;/ui/sso/select.jsp&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user_info&amp;nbsp;path=&amp;quot;/ui/sso/user_info.jsp&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;logged_out&amp;nbsp;path=&amp;quot;/ui/sso/logged_out.jsp&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/view&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;authentication&amp;nbsp;always_show_select_form=&amp;quot;false&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;methods&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;method&amp;nbsp;id=&amp;quot;JNDIPassword&amp;quot;&amp;nbsp;friendlyname=&amp;quot;Password&amp;nbsp;Authentication&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.authentication.password.PasswordAuthenticationMethod&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;template&amp;nbsp;path=&amp;quot;/ui/sso/authn/password/password.jsp&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;retries&amp;gt;3&amp;lt;/retries&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password_handler&amp;nbsp;class=&amp;quot;com.alfaariss.oa.authentication.password.jndi.JNDIPasswordHandler&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;nbsp;realm=&amp;quot;@domain.com&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;full_uid&amp;gt;true&amp;lt;/full_uid&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/driver&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&amp;server;&amp;lt;/url&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ssl&amp;gt;false&amp;lt;/ssl&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&amp;user;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;&amp;password;&amp;lt;/password&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security_principal&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;base&amp;gt;&amp;base;&amp;lt;/base&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user&amp;gt;userPrincipalName&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/dn&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/resource&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/password_handler&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/method&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/methods&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/authentication&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/websso&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;IdP&amp;nbsp;Profiles&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;profiles&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;profile&amp;nbsp;id=&amp;quot;openid&amp;quot;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.profile.openid.OpenIDProcessor&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;privatestore&amp;gt;memory&amp;lt;/privatestore&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sharedstore&amp;gt;memory&amp;lt;/sharedstore&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;usermapping&amp;gt;simple&amp;lt;/usermapping&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;interval&amp;gt;86400&amp;lt;/interval&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;expirytime&amp;gt;1800&amp;lt;/expirytime&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;endpoint&amp;gt;https://openid.domain.com/openaselect/profiles/openid/&amp;lt;/endpoint&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;confirmationpage&amp;gt;/ui/profiles/openid/authz_consumer.jsp&amp;lt;/confirmationpage&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;xrdsdocument&amp;gt;/ui/users/xrds/xrds.jsp&amp;lt;/xrdsdocument&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;userdocument&amp;gt;/ui/users/user.jsp&amp;lt;/userdocument&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;error&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jsp&amp;nbsp;path=&amp;quot;/ui/profiles/openid/error.jsp&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/error&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;websso&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;path&amp;gt;/sso/web&amp;lt;/path&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/websso&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;associationstores&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;associationstore&amp;nbsp;id=&amp;quot;memory&amp;quot;&amp;nbsp;class=&amp;quot;org.openid4java.server.InMemoryServerAssociationStore&amp;quot;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/associationstores&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mappings&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mapping&amp;nbsp;id=&amp;quot;simple&amp;quot;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.profile.openid.mapping.SimpleMapping&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;config&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;idtemplate&amp;gt;https://openid.domain.com/[username]&amp;lt;/idtemplate&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/config&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mapping&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mappings&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;extensions&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;extension&amp;nbsp;id=&amp;quot;http://openid.net/extensions/sreg/1.0&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.profile.openid.extension.sreg.SimpleRegistrationProcessor&amp;quot;&amp;nbsp;param_signing=&amp;quot;true&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;extension&amp;nbsp;id=&amp;quot;http://openid.net/extensions/sreg/1.1&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.profile.openid.extension.sreg.SimpleRegistrationProcessor&amp;quot;&amp;nbsp;param_signing=&amp;quot;true&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;extension&amp;nbsp;id='http://openid.net/srv/ax/1.0'&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.profile.openid.extension.ax.AttributeExchangeProcessor&amp;quot;&amp;nbsp;param_signing=&amp;quot;true&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/extensions&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/profile&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/profiles&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;Helpers&amp;nbsp;--&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;helpers&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;helper&amp;nbsp;id=&amp;quot;stylesheet&amp;quot;&amp;nbsp;enabled=&amp;quot;true&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class=&amp;quot;com.alfaariss.oa.helper.stylesheet.StyleSheetHelper&amp;quot;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;default&amp;nbsp;location=&amp;quot;http://openid.domain.com/css/style.css&amp;quot;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/helper&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/helpers&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;/oa-server&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-4310976916900568559?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/4310976916900568559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/06/openid-with-openaselect-part-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/4310976916900568559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/4310976916900568559'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/06/openid-with-openaselect-part-4.html' title='OpenID with OpenASelect - Part 4'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-8240626515882353916</id><published>2009-06-01T00:44:00.000-07:00</published><updated>2009-06-17T07:36:01.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='openaselect'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>OpenID with OpenASelect - Part 3</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://openid.net/images/logo/openid-icon-1000x1000.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://openid.net/images/logo/openid-icon-1000x1000.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now that my OpenASelect server is running it's time to make it a bit more attractive and robust. Apart from creating flashy JSPs based on our corporate CSS style this means:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make the user URL as short as possible, something like &lt;code&gt;openid.domain.com/username&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Better yet, instead of the full User Principal Name (UPN) (which includes as a domain &lt;code&gt;@domain.com&lt;/code&gt;) I want users to be able to use &lt;code&gt;firstname.lastname&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Allow users to also use &lt;code&gt;firstname.lastname&lt;/code&gt; (without the domain) when they use &lt;code&gt;openid.domain.com&lt;/code&gt; as URL (the OAS server asks the user to enter both the user name and the password in that case)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Secure the server with a certificate (our authentication is password based, after all)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Most of these issues can be resolved by placing a regular httpd server in front of the Tomcat server (using &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html"&gt;mod_proxy&lt;/a&gt;). The advantage is that &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html"&gt;mod_rewrite&lt;/a&gt; can then be used to allow user to be sloppy with their UPN in omnidirectional identifiers.&lt;br /&gt;&lt;br /&gt;The regular httpd server accepts connections on port 80 and proxies these to the Tomcat server which has an AJP connector on port 8009:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;ProxyPassReverse /openaselect/ ajp://localhost:8009/openaselect/&lt;br /&gt;ProxyPass /openaselect/ ajp://localhost:8009/openaselect/&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;Clients can remain unaware of the fact that pages under &lt;code&gt;openaselect/&lt;/code&gt; are actually served by the Tomcat server and not by the httpd server they are connected to. On top of that I used mod_rewrite to get prettier URLs:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;RewriteRule ^/([A-Za-z0-9]+\.[A-Za-z0-9]+)$ http://openid.novay.nl/openaselect/profiles/openid/users/$1@domain.com [P,L]&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;The rewriting trick works well for omnidirectional identifiers in which the username is part of the OpenID URL. When the user merely enters &lt;code&gt;http://openid.novay.nl&lt;/code&gt; at an RP and the actual OpenID URL is established through discovery things get a bit more complex. The rewriting needs to be done at a slightly deeper level. The configuration file links to Java classes for many of the sub-processes. In my &lt;code&gt;oa.xml&lt;/code&gt; most of these classes are standard Alfa &amp;amp; Ariss classes, for example I used a &lt;code&gt;StandardTranslator&lt;/code&gt; inside the user provisioning process. I replaced the reference to this class with my own &lt;code&gt;SloppyUPNTranslator&lt;/code&gt; so that users can leave out the domain part of their UPN. Deploying is done by adding the class to a jar file and dropping it inside the &lt;code&gt;lib/&lt;/code&gt; directory within &lt;code&gt;WEB-INF&lt;/code&gt;. My translator simply &lt;a href="http://en.wikipedia.org/wiki/Decorator_pattern"&gt;wraps&lt;/a&gt; a &lt;code&gt;StandardTranslator&lt;/code&gt; and overrides the &lt;code&gt;translate(String)&lt;/code&gt; method by adding a &lt;code&gt;"@novay.nl"&lt;/code&gt; to the argument before calling the wrapped translator.&lt;br /&gt;&lt;br /&gt;Am I finished playing with OAS as OpenID provider? For now. But there are plenty of loose ends that I intend to investigate later on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Session identifiers when the user merely uses &lt;code&gt;https://openid.novay.nl&lt;/code&gt; with an RP, the discovered URL can be used to track the user. I'd like to see if OAS can be tweaked to use a per-RP, or even per-session, pseudonym here.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Other, innovative, authentication methods. Perhaps smart card based.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Deploy OAS in &lt;a href="http://code.google.com/intl/nl/appengine/docs/java/overview.html"&gt;Google App Engine&lt;/a&gt;. Not connected to our AD, of course. Just to see if it's possible: Looks like the server uses some threads, not sure if these are necessary.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Acknowledgment:&lt;/b&gt; Joost Reede of Alfa &amp;amp; Ariss was of invaluable help configuring the server and explaining OpenASelect basics. Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-8240626515882353916?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/8240626515882353916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/06/openid-with-openaselect-part-3.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/8240626515882353916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/8240626515882353916'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/06/openid-with-openaselect-part-3.html' title='OpenID with OpenASelect - Part 3'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-682750032578042647</id><published>2009-05-28T07:51:00.001-07:00</published><updated>2009-06-11T05:36:04.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='openaselect'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><title type='text'>OpenID with OpenASelect - Part 2</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://openid.net/images/logo/openid-icon-1000x1000.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://openid.net/images/logo/openid-icon-1000x1000.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The OpenID profile is configured from the main OpenASelect &lt;code&gt;oa.xml&lt;/code&gt; configuration file. The default OpenID profile (from the OpenASelect site) only needed minor changes. There are two parameters which need to be set:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &amp;lt;endpoint&amp;gt;: &lt;code&gt;http://localhost:8080/openaselect/profiles/openid/&lt;/code&gt;&lt;/li&gt;&lt;li&gt;The &amp;lt;idtemplate&amp;gt;: &lt;code&gt;http://localhost:8080/openaselect/profiles/openid/users/[username]&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;They both look too ugly to be used by actual users, but changing them requires hiding the Tomcat server behind a regular httpd, which I'll cover in part 3 of this post. For testing I left them as they are since my Tomcat runs at port 8080.&lt;br /&gt;&lt;br /&gt;I first tried to get OpenID to work with the identifying authentication method and file based user provisioning. This basically means that when the user goes to the RP and enters an OpenID with a user name that is present in &lt;code&gt;users.xml&lt;/code&gt; then this should result in an authentication that is accepted by the RP. If he enters a user name that is not present in the file then it should fail.&lt;br /&gt;&lt;br /&gt;Next step was to replace the user provisioning and the identifying authentication method with something that actually checks with our corporate AD server to see if a user can present valid credentials. For testing I configured OpenASelect to use my personal credentials to get access to LDAP (in an actual deployment one would probably create a dedicated user, called &lt;i&gt;Security Principal&lt;/i&gt; in &lt;code&gt;oa.xml&lt;/code&gt;, for this). The settings I needed to know were:&lt;ul&gt;&lt;li&gt;The server, something like &lt;code&gt;"ldap://host:389"&lt;/code&gt;&lt;/li&gt;&lt;li&gt;The base, something like &lt;code&gt;"OU=Intitute,DC=Corporate,DC=domain,DC=com"&lt;/code&gt;&lt;/li&gt;&lt;li&gt;The user name and the password of the security principal&lt;/li&gt;&lt;/ul&gt;There are several sections in &lt;code&gt;oa.xml&lt;/code&gt; where these credentials have to be repeated, so it's a good idea to define them as &lt;code&gt;&amp;lt;!ENTITY&amp;gt;&lt;/code&gt; elements somewhere near the top of the file.&lt;br /&gt;&lt;br /&gt;I introduced JNDI authentication in two steps: first, change the user provisioning to use JNDI (&lt;a href="http://java.sun.com/products/jndi/"&gt;JNDI&lt;/a&gt; is the Java interface to LDAP) and keep the identifying authentication method, although replacing the identifying authentication method with a JNDI password authentication method actually proved to be completely trivial. The &lt;i&gt;userPrincipalName&lt;/i&gt; field with a so-called "exist-converter" is what I used in the translator part of the userfactory. This means that the identifiers for users look something like &lt;code&gt;firstname.lastname@domain.com&lt;/code&gt;. You can get rid of the &lt;code&gt;@domain.com&lt;/code&gt; part in several ways. I'll cover this in part 3.&lt;br /&gt;&lt;br /&gt;Now that authentication works, it's time to look at attribute release. OpenID has two extensions which deal with this: &lt;a href="http://openid.net/specs/openid-simple-registration-extension-1_0.html"&gt;SREG&lt;/a&gt; and &lt;a href="http://openid.net/specs/openid-attribute-exchange-1_0.html"&gt;AX&lt;/a&gt;. I wanted support for both of them.&lt;br /&gt;Then AX. There's an &lt;code&gt;&amp;lt;extensions&amp;gt;&lt;/code&gt; section in the OpenID profile bit of &lt;code&gt;oa.xml&lt;/code&gt;. I needed to set &lt;code&gt;param_signing&lt;/code&gt; to true.&lt;br /&gt;&lt;br /&gt;The attribute gathering process is configured in the &lt;code&gt;&amp;lt;attributegatherer&amp;gt;&lt;/code&gt; section of &lt;code&gt;oa.xml&lt;/code&gt;. I made a processor for SREG (SREG uses a fixed set of attribute names: &lt;i&gt;nickname&lt;/i&gt;, &lt;i&gt;email&lt;/i&gt;, &lt;i&gt;fullname&lt;/i&gt;, &lt;i&gt;postcode&lt;/i&gt;, &lt;i&gt;country&lt;/i&gt; are the names for which I found an equivalent in our AD) and several processors for AX (AX attribute names are identified using schema URLs, there are actually a couple of schemas with good RP support, so I included a processor for each of: &lt;code&gt;http://axschema.org&lt;/code&gt;, &lt;code&gt;http://openid.net/schema&lt;/code&gt;, &lt;code&gt;http://schema.openid.net&lt;/code&gt;, and &lt;code&gt;http://verify.sxip.com/schema&lt;/code&gt;). Each processor maps LDAP attributes (the external name) to SREG or AX attributes (the internal name). A small problem I ran into here is that the mapping characteristic of this part of the configuration makes it rather hard to export, for example, the telephone number found in our AD to two distinct AX attribute names (default and business phone number).&lt;br /&gt;&lt;br /&gt;The result, besides a rather lengthy configuration file is an OpenASelect server that talks to our AD and acts as an OP. The PHP based OpenID RP I had running locally can be used to test the authentication and SREG functionality (it doesn't seem to support AX yet).&lt;br /&gt;&lt;br /&gt;In part 3 I'll hide tomcat behind a regular &lt;a href="http://httpd.apache.org/"&gt;httpd&lt;/a&gt; and try to improve the overall end-user experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-682750032578042647?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/682750032578042647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/05/openid-with-openaselect-part-2.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/682750032578042647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/682750032578042647'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/05/openid-with-openaselect-part-2.html' title='OpenID with OpenASelect - Part 2'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-184450526651388285</id><published>2009-05-26T02:50:00.001-07:00</published><updated>2009-06-11T05:37:11.126-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='openaselect'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>OpenID with OpenASelect - Part 1</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://openid.net/images/logo/openid-icon-1000x1000.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://openid.net/images/logo/openid-icon-1000x1000.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; is a popular online identity management framework (standard?). In an attempt to get some hands-on experience with it I decided to see if I could provide our company's Active Directory server (an LDAP like service which authenticates users for access to their Windows desktops and also contains identity attributes available to email clients such as Outlook) with an OpenID interface so that it can be used as an OP towards external RPs. Sort of like &lt;a href="https://openid.sun.com/opensso/index.jsp"&gt;Sun's OP&lt;/a&gt;, but for &lt;a href="http://www.novay.nl/"&gt;Novay&lt;/a&gt; employees.&lt;br /&gt;&lt;br /&gt;How to become an OP? There's a &lt;a href="http://wiki.openid.net/Libraries"&gt;list of open source APIs and libraries&lt;/a&gt; for different languages and &lt;a href="http://wiki.openid.net/Run_your_own_identity_server"&gt;servers&lt;/a&gt;. &lt;a href="http://www.alfa-ariss.com/"&gt;Alfa &amp;amp; Ariss&lt;/a&gt;' &lt;a href="http://www.openaselect.org/"&gt;OpenASelect&lt;/a&gt; server seemed appropriate for my purposes as it can talk OpenID and LDAP and runs on top of &lt;a href="http://tomcat.apache.org/"&gt;Tomcat&lt;/a&gt;. Also, since Alfa &amp;amp; Ariss is just around the corner from our office it's easy to ask for help (thanks Joost!).&lt;br /&gt;&lt;br /&gt;I set up a &lt;a href="http://vmware.com/"&gt;box&lt;/a&gt; with &lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt;, &lt;a href="http://www.postgresql.org/"&gt;postgreSQL&lt;/a&gt;, and &lt;a href="http://tomcat.apache.org/"&gt;Tomcat&lt;/a&gt; and deployed the OpenASelect &lt;i&gt;war&lt;/i&gt; based app. After restarting Tomcat I ran the database creation scripts and my OpenASelect server was up and running.&lt;br /&gt;&lt;br /&gt;Configuring is done by editing the &lt;code&gt;oa.xml&lt;/code&gt; file whose format is described extensively on the &lt;a href="http://www.openaselect.org/trac/openaselect/wiki/ServerGuides"&gt;OpenASelect website&lt;/a&gt;. The configuration file roughly consists of three sections (roughly, because these do not correspond logically one-to-one with the top-level elements in the file):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;User (and attribute) provisioning&lt;/li&gt;&lt;li&gt;Authentication method&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Protocol profiles (such as OpenID)&lt;/li&gt;&lt;/ul&gt;Obviously, I wanted to start with a minimal configuration file. I was thinking of using the file based user provisioning (which uses a &lt;code&gt;users.xml&lt;/code&gt; file containing user names and additional attributes) with htpasswd based password authentication (which, yes, uses a &lt;code&gt;htpasswd&lt;/code&gt; file). Get that to work first and add OpenID and LDAP later.&lt;br /&gt;&lt;br /&gt;A problem I ran into at that point: there's no other way to test the freshly installed OpenASelect server than to have some external service (the RP) use the identity server. So, it actually turned out to be easier to install the OpenID profile (a seperate download, unzip it on top of the deployed OpenASelect, run some database creation scripts, restart). Since our AD server is behind the corporate firewall I had to install an OpenID RP locally to test against (OpenID, though user-centric, apparently needs the RP to be able to communicate directly with the OP). The simple &lt;a href="http://openidenabled.com/php-openid/"&gt;PHP OpenID RP&lt;/a&gt; is great for this purpose.&lt;br /&gt;&lt;br /&gt;Also, there's an authentication method called identifying method which is much easier for testing than password based authentication.&lt;br /&gt;&lt;br /&gt;Part 2 describes how I got OpenID to work and how I connected the OpenASelect server to the AD back-end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-184450526651388285?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/184450526651388285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/05/openid-with-openaselect-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/184450526651388285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/184450526651388285'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/05/openid-with-openaselect-part-1.html' title='OpenID with OpenASelect - Part 1'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-4041004971801091981</id><published>2009-03-31T04:39:00.000-07:00</published><updated>2009-04-15T05:41:44.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='defense in depth'/><category scheme='http://www.blogger.com/atom/ns#' term='rbac'/><category scheme='http://www.blogger.com/atom/ns#' term='perimeter'/><category scheme='http://www.blogger.com/atom/ns#' term='organizations'/><category scheme='http://www.blogger.com/atom/ns#' term='employees'/><category scheme='http://www.blogger.com/atom/ns#' term='de-perimeterization'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='future workspaces'/><category scheme='http://www.blogger.com/atom/ns#' term='accountability'/><title type='text'>Security in the workspace - Part 3</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oQfyyV5fZVQ/SeSqITec5qI/AAAAAAAADFQ/tMF16atf4MI/s1600-h/Borobudur-perfect-buddha.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 84px; height: 97px;" src="http://4.bp.blogspot.com/_oQfyyV5fZVQ/SeSqITec5qI/AAAAAAAADFQ/tMF16atf4MI/s320/Borobudur-perfect-buddha.jpg" alt="" id="BLOGGER_PHOTO_ID_5324567719102441122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It seems that we will have to learn to live and work in a de-perimeterized world. &lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B7XMX-4JD267P-B&amp;amp;_user=10&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;view=c&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=98c7107d4cbcea07418d9bbfb00d85d2"&gt;Acceptance&lt;/a&gt; of the problem is often the first step towards a solution. So, what alternatives to perimeter defense are there? And what is the impact of these alternatives on the &lt;a href="http://futureworkspaces.nl/"&gt;future workspace&lt;/a&gt; and vice versa? Below are some thoughts. I hesitate to call these conclusions. Please consider these as starting points for a discussion.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.owasp.org/index.php/Defense_in_depth"&gt;Defense in depth&lt;/a&gt; is the complete opposite of perimeter defense (when considering the location where controls are implemented). This security &lt;a href="http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/security-principles.html"&gt;principle&lt;/a&gt; advises to apply multiple layers of security controls, so that if one layer fails other layers take over.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unfortunately, complete defense in depth is increasingly expensive as it is difficult to maintain,&lt;/li&gt;&lt;li&gt;and because too many layers of security get in the way. (Is there a &lt;a href="http://www.nczonline.net/blog/2007/01/19/security-vs-usability/"&gt;usabilty vs security trade-off&lt;/a&gt;? I'm not sure. But usability is probably not helped with adding multiple layers of security.)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Most experts see a shift from perimeter defense (and other location based defenses) to &lt;i&gt;data oriented&lt;/i&gt; security. (Perhaps that should be &lt;i&gt;information&lt;/i&gt; oriented security?)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Because of the multiple contexts in which employees now process data, this requires some sort of &lt;i&gt;watermarking&lt;/i&gt; of sensitive and valuable data. If, for example, lost information can be tracked back to employees responsible for that information than those employees can be held accountable for the loss. But wasn't &lt;a href="http://www.wired.com/entertainment/music/news/2008/01/sony_music"&gt;DRM declared dead&lt;/a&gt;?&lt;/li&gt;&lt;li&gt;Moreover, data oriented security makes &lt;i&gt;valuation&lt;/i&gt; of information necessary:  relative sensitivity and value to the organization should be made explicit. Valuation of assets should be done anyway (as part of information risk management), but that doesn't mean that it is easy, cheap or common practice today!&lt;/li&gt;&lt;li&gt;Related to the above point: information should be stored and processed with a clear goal in mind (for reasons of Governance, Regulations, Complicance). This is at least as difficult as valuation.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Accountability (the other &lt;a href="http://acronyms.thefreedictionary.com/Authentication,+Authorization+and+Access"&gt;A&lt;/a&gt;-word) may be an alternative to access control. Access control is somewhat problematic in the absence of a perimeter after all. Access control is expensive in the future workspace since employees join and leave the organization on a more regular basis (access credentials management is costly). Accountability certainly seems to be more compatible with the greater responsibility given to employees as part of the future workspace trends.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Identity management is necessary, as accountability usually means a great deal of logging (of actions of employees). Logging obviously requires the capability to distinguish between employees (try holding individuals accountable for their actions when you can't tell them apart). However, since we left the perimeter behind us, we can't rely on the classical identity management process which involves provisioning, authentication, and authorization.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The provisioning problem could be overcome if we could use an established identity provider's infrastructure which extends beyond the bounds of the organization. The existing identity provider (I'm thinking of national governments) has the infrastructure for issuing authentication means to individuals already in place. If such a global identity provider is not (yet) possible, federated identity management and user-centric identity management may be alternatives (in the mean time).&lt;/li&gt;&lt;li&gt;Authentication has to be done decentralized (in absense of a perimeter with check points) and preferably as often as possible yet also as unobtrusive as possible. Perhaps context-information could help here?&lt;/li&gt;&lt;li&gt;Authorization, on the other hand, is better done centralized so as to achieve consistent rules which are easy to manage. Well-defined &lt;a href="http://en.wikipedia.org/wiki/RBAC"&gt;roles&lt;/a&gt; could be useful here&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;Other points? Leave a comment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-4041004971801091981?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/4041004971801091981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/03/security-in-workspace-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/4041004971801091981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/4041004971801091981'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/03/security-in-workspace-part-3.html' title='Security in the workspace - Part 3'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oQfyyV5fZVQ/SeSqITec5qI/AAAAAAAADFQ/tMF16atf4MI/s72-c/Borobudur-perfect-buddha.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-3050337555342139210</id><published>2009-02-17T02:03:00.000-08:00</published><updated>2009-04-08T04:43:03.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perspective'/><category scheme='http://www.blogger.com/atom/ns#' term='perimeter'/><category scheme='http://www.blogger.com/atom/ns#' term='organizations'/><category scheme='http://www.blogger.com/atom/ns#' term='employees'/><category scheme='http://www.blogger.com/atom/ns#' term='de-perimeterization'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><category scheme='http://www.blogger.com/atom/ns#' term='specialization'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='future workspaces'/><title type='text'>Security in the workspace - Part 2</title><content type='html'>The word &lt;a href="https://www.opengroup.org/jericho/deperim.htm"&gt;de-perimeterization&lt;/a&gt; is used by security experts both to describe a problem and a solution. The problem is clear: when we rely on perimeter defense, a disappearing perimeter is problematic. The solution says that instead of fighting de-perimeterization, by trying to rebuild parts of the perimeter, we should admit that perimeters will be gone soon and implement our security measures on a different level.&lt;br /&gt;&lt;br /&gt;What is causing the problem? Here are three major factors which seem to drive de-perimeterization:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Networked Business: Suppliers, customers, and service providers all work with the organization on a much finer grained level than they used to. This is the result of specialization. An example is outsourcing: It can be very cost-effective to outsource certain tasks to more specialized organizations. Outsourcing requires so-called service level agreements: contracts between the organization and service provider about the quality of the services rendered. Security should be a part of such agreements as these parties operate within the perimeter.&lt;/li&gt;&lt;li&gt;Governance, Regulations, Compliance: Organizations need to comply with more and more external laws and regulations. Often these call for more transparency towards shareholders, governments and the general public. This means that these parties need to pass the perimeter.&lt;/li&gt;&lt;li&gt;Insider Threats: Employees are not the loyal workers they once were. Maybe most of them still are, yet some of them will try to gain access to your most valuable assets for personal gain. If you cannot trust your own employees, who operate within the perimeter, then you might as well get rid of the perimeter.&lt;/li&gt;&lt;/ul&gt;It is clear that each of these factors impacts the perimeter. Are there more?&lt;br /&gt;&lt;br /&gt;The de-perimeterization factors are closely related to trends typically attributed to &lt;a href="http://www.futureworkspaces.nl/"&gt;Future Workspaces&lt;/a&gt;. The difference is in the perspective. When I think of securing an organization, I tend to take the perspective of the organization. When I try to imagine what the workspace of the future will look like I tend to take the perspective of employees. We identify the following trends:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Relation to employer (or, perhaps, loyalty to the organization)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Employees no longer work for one employer for 40 years but switch jobs regularly.&lt;/li&gt;   &lt;li&gt;Employees work for different employers at the same time (I used to work &lt;a href="http://www.riscure.com/"&gt;here&lt;/a&gt; and &lt;a href="http://www.cs.ru.nl/ds"&gt;here&lt;/a&gt; at the same time, which rarely led to conflicts of interest).&lt;/li&gt;   &lt;li&gt;Professional social network of most employees is bigger than it used to be, extending well beyond the organization’s borders.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Responsibilities&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Employees are given greater responsibility in representing the organization.&lt;/li&gt;&lt;li&gt;Organizations are less hierarchically managed.&lt;/li&gt;&lt;li&gt;Employees (are encouraged to) &lt;a href="http://blog.mathemagenic.com/"&gt;write&lt;/a&gt; about their professional lives in blogs.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Collaboration&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Not every organization has experts in every field. Organizations are aware of external experts (thanks to openness of other organizations) and encourage employees to collaborate with them.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Work in different contexts&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Employees can work from home.&lt;/li&gt;&lt;li&gt;Employees (especially knowledge workers) travel much more and work while in transit (using mobile devices).&lt;/li&gt;&lt;li&gt;Employees work (while outsourced) at client.&lt;/li&gt;&lt;li&gt;Employees work irregular hours.&lt;/li&gt;&lt;li&gt;Employees work shorter hours, some colleagues may almost never meet in person.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;At the very least we can claim that the Future Workspace trends reinforce the de-perimeterization factors. The de-perimeterization problem is made bigger and more urgent for organizations to deal with. In fact, many of the &lt;a href="http://www.nos.nl/nosjournaal/artikelen/2006/2/8/overzicht_incidenten_met_vertrouwelijke_gegevens.html"&gt;security incidents&lt;/a&gt; that organizations are faced with can be explained in terms of security controls which are part of the old perimeter defense interacting with employees' new found freedom.&lt;br /&gt;&lt;br /&gt;In part 3 I will look at ways forward in the de-perimeterized future workspace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-3050337555342139210?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/3050337555342139210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/02/security-in-workspace-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3050337555342139210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3050337555342139210'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/02/security-in-workspace-part-2.html' title='Security in the workspace - Part 2'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-8198354195554199784</id><published>2009-02-10T06:05:00.000-08:00</published><updated>2009-02-10T07:42:21.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='incidents'/><category scheme='http://www.blogger.com/atom/ns#' term='de-perimeterization'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='future workspaces'/><title type='text'>Security in the workspace - Part 1</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oQfyyV5fZVQ/SZGLKavyyWI/AAAAAAAAC98/6lH_9fICelQ/s1600-h/emperor_penguins.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 150px;" src="http://3.bp.blogspot.com/_oQfyyV5fZVQ/SZGLKavyyWI/AAAAAAAAC98/6lH_9fICelQ/s320/emperor_penguins.jpg" alt="" id="BLOGGER_PHOTO_ID_5301171247486519650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The workspace is changing. What will mostly be different is the relationship between employees and the organizations they work for. I’m interested in the consequences these changes have for the administration of information security in organizations.&lt;br /&gt;&lt;br /&gt;Information security incidents have become part of our lives during the last couple of years. Popular media regularly report on incidents which range from &lt;a href="http://www.youtube.com/watch?v=5gFfMTdxKfg&amp;amp;feature=related"&gt;lost&lt;/a&gt; &lt;a href="http://www.spitsnieuws.nl/archives/binnenland/2008/10/mannen_gepakt_met_usbstick_def.html"&gt;pen&lt;/a&gt; &lt;a href="http://nl.wikipedia.org/wiki/Tonino"&gt;drives&lt;/a&gt; &lt;a href="http://webwereld.nl/article/view/id/42446"&gt;filled&lt;/a&gt; with &lt;a href="http://www.security.nl/article/15308/1/Overheid_verliest_weer_vertrouwelijke_USB-stick_in_huurauto.html"&gt;privacy&lt;/a&gt; &lt;a href="http://www.nos.nl/nosjournaal/artikelen/2006/2/8/overzicht_incidenten_met_vertrouwelijke_gegevens.html"&gt;sensitive&lt;/a&gt; &lt;a href="http://www.silicon.com/publicsector/0,3800010403,39274254,00.htm"&gt;data&lt;/a&gt; to financial fraud by &lt;a href="http://en.wikipedia.org/wiki/January_2008_Soci%C3%A9t%C3%A9_G%C3%A9n%C3%A9rale_trading_loss_incident"&gt;employees&lt;/a&gt; costing financial organizations billions. The increase in reported incidents not only shows that security incidents are on the rise but it also indicates a change (&lt;a href="http://www.dailyfreepress.com/obama_openness_prevails-1.1321629"&gt;yes we can!&lt;/a&gt;) in how organizations respond to incidents. Reputation and trust are increasingly important concepts in today’s business world, and organizations need to find ways to deal with security problems.&lt;br /&gt;&lt;br /&gt;The openness that organizations are showing lately, both to customers, to employees, to other organizations, and to the general public is interesting. From a security perspective openness is a double edged sword: On the one hand, openness means granting access to parties which may not be trusted yet. This clearly complicates security administration. On the other hand, openness also stands for transparency and open standards which simplify matters. And simple things are easier to secure.&lt;br /&gt;&lt;br /&gt;Security researchers who study organizational security associate the new found openness in organizations with de-perimeterization. De-perimeterization means that the perimeters of organizations are disappearing. This is problematic because most security strategies pay a lot of attention to perimeter defense: Concentrate your efforts on the perimeter and the rest of the organization is secure.&lt;br /&gt;&lt;br /&gt;Is perimeter defense a bad strategy? Thousands of &lt;a href="http://www.coolantarctica.com/Antarctica%20fact%20file/science/cold_penguins.htm"&gt;huddling Emperor penguins&lt;/a&gt; can’t be wrong, can they? And if you’ve ever played the board game &lt;a href="http://martijno.blogspot.com/2009/02/game-theoretic-analysis-of-de.html"&gt;Risk&lt;/a&gt; you know that the best strategy to defend a continent is to move all your armies to the border countries.&lt;br /&gt;&lt;br /&gt;In part 2 we will have a closer look at de-perimeterization and see how it interacts with &lt;a href="http://www.futureworkspaces.nl/"&gt;future workspaces&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-8198354195554199784?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/8198354195554199784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/02/workspace-is-changing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/8198354195554199784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/8198354195554199784'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/02/workspace-is-changing.html' title='Security in the workspace - Part 1'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oQfyyV5fZVQ/SZGLKavyyWI/AAAAAAAAC98/6lH_9fICelQ/s72-c/emperor_penguins.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-3990241935025376746</id><published>2009-02-02T04:40:00.000-08:00</published><updated>2009-04-16T01:16:07.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='fraud'/><category scheme='http://www.blogger.com/atom/ns#' term='epassport'/><title type='text'>The ePassport helps fight online identity fraud</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oQfyyV5fZVQ/SeXSx_6Pj-I/AAAAAAAADFY/pxeD0BLbyu8/s1600-h/DSC_0765.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 178px; height: 118px;" src="http://2.bp.blogspot.com/_oQfyyV5fZVQ/SeXSx_6Pj-I/AAAAAAAADFY/pxeD0BLbyu8/s320/DSC_0765.jpg" alt="" id="BLOGGER_PHOTO_ID_5324893890846625762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This translation of an article in Dutch newspaper het &lt;a href="https://doc.freeband.nl/dsweb/Services/Document-95873"&gt;Financiële&lt;/a&gt; &lt;a href="http://www.fd.nl/artikel/10977321/paspoort-helpt-online-frauderen-voorkomen"&gt;Dagblad&lt;/a&gt;, 2 februari 2009, pp. 7 was created by &lt;a href="http://translate.google.com/"&gt;Google translate&lt;/a&gt; (with only slight modifications by hand). &lt;a href="http://pressrelease.perssupport.nl/publishingweb/pressrelease/detail.do?pressId=24148&amp;type=detail&amp;subType=today&amp;searchKey=146a1183-f41c-11dd-9be3-a32719bd6028&amp;subSearchKey=6b9e4590-f1b2-11dd-8f1c-37a0e0ffb811&amp;languageId=NL&amp;rubricId=null&amp;themeId=null&amp;attachmentTypeId=null&amp;timeRangeId=null&amp;pageIndex=1"&gt;The&lt;/a&gt; &lt;a href="http://www.pcmweb.nl/artikel.jsp?id=2372168"&gt;Dutch&lt;/a&gt; &lt;a href="http://www.automatiseringgids.nl/IT%20in%20bedrijf/Innovatie/2008/51/Paspoortchip%20helpt%20internetfraude%20bestrijden.aspx"&gt;version&lt;/a&gt; &lt;a href="http://sync.nl/e-shoppen-met-je-paspoort/"&gt;also&lt;/a&gt; &lt;a href="http://webwereld.nl/nieuws/54033/-paspoortchip-middel-tegen-online-id-fraude-.html"&gt;appears&lt;/a&gt; &lt;a href="http://www.techzine.nl/nieuws/18722/Paspoort-kan-ingezet-worden-tegen-fraude.html"&gt;elsewhere&lt;/a&gt; &lt;a href="http://www.tctubantia.nl/regio/twente/4212872/Paspoort-wapen-tegen-identiteitsfraude.ece"&gt;on&lt;/a&gt; &lt;a href="http://www.ditkannietwaarzijn.info/?p=6835"&gt;the&lt;/a&gt; &lt;a href="http://www.nieuwsbank.nl/_payment/order/1772034440/inp/2008/12/16/R300.htm"&gt;interwebs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A new tool in the fight against identity fraud has arrived. The Dutch ePassport with chip can be used as additional identification technology for Internet transactions. Without loss of privacy.&lt;br /&gt;&lt;br /&gt;This is evident from &lt;a href="http://nlnet.nl/"&gt;NLnet Foundation&lt;/a&gt; funded research &lt;a href="http://martijno.blogspot.com/"&gt;Martijn Oostdijk&lt;/a&gt; and &lt;a href="http://www.telin.nl/index.cfm?ID=1239&amp;amp;context=1240&amp;amp;language=en"&gt;Dirk-Jan van Dijk&lt;/a&gt; of the &lt;a href="http://www.telin.nl/"&gt;Telematica Institute&lt;/a&gt; have done. Using a simple card reader, the chip can be read on any PC. The standards to do this are public. The researchers developed &lt;a href="http://jmrtd.org/"&gt;software&lt;/a&gt; for an &lt;a href="http://jmrtd.org/authep/"&gt;identity provider&lt;/a&gt; - a trusted party that creates digital identities and provides these to other parties - which they run on a server at the institute. Furthermore, the duo developed software that must be installed on the client's PC.&lt;br /&gt;&lt;br /&gt;With passport in hand, the user may enter a web shop. The shop might need to know if the buyer is older than 18. The identity provider filters out only the information from the passport required for the purchase, and forwards that information to the shop. The buyer remains in charge of his own data and can terminate the transaction at any moment. The process is intended as additional evidence. Often, a user needs various account names and passwords to use various online services. But such credentials, also credit cards, etc. may fall into the wrong hands. Of course, a passport can also be stolen. "This is why the passport by itself should not be used as identification. But in combination with other authentication means it could stop simple forms of identity theft", said &lt;a href="http://isoc.nl/michiel/"&gt;Michiel&lt;/a&gt; &lt;a href="http://nlnet.nl/people/leenaars.html"&gt;Leenaars&lt;/a&gt;, strategy director of &lt;a href="http://nlnet.nl/"&gt;Stichting NLnet&lt;/a&gt;. According to Martijn Oostdijk, the system is suitable for all forms of identification. "It's not just for online purchases. The system might play a role in safe surfing by &lt;a href="http://en.wikipedia.org/wiki/For_The_Children_(politics)"&gt;children&lt;/a&gt; or &lt;a href="http://ikregeer.nl/document/BLG18295"&gt;patient access&lt;/a&gt; to electronic health records, etc."&lt;br /&gt;&lt;br /&gt;Identity fraud is costing society billions of euros per year. In the U.S., the damage last year was 31 billion euro. At present, slightly less than half of all Dutch citizens have a passport or identity card with chip. In 2011, that will be the case for all citizens.&lt;br /&gt;&lt;br /&gt;NLnet Foundation is committed to an open information society and supports projects that contribute financially. Software developed within the projects are published as "open source" and is freely available for parties who wish to further develop it. The &lt;a href="http://www.telin.nl/"&gt;Telematica Institute&lt;/a&gt; combines innovation power and knowledge of IT to achieve breakthroughs in how we live.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-3990241935025376746?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/3990241935025376746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/02/epassport-helps-fight-online-identity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3990241935025376746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/3990241935025376746'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/02/epassport-helps-fight-online-identity.html' title='The ePassport helps fight online identity fraud'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oQfyyV5fZVQ/SeXSx_6Pj-I/AAAAAAAADFY/pxeD0BLbyu8/s72-c/DSC_0765.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-1470405430667562386</id><published>2009-02-01T01:00:00.000-08:00</published><updated>2009-02-10T08:18:35.040-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perimeter'/><category scheme='http://www.blogger.com/atom/ns#' term='risk'/><category scheme='http://www.blogger.com/atom/ns#' term='de-perimeterization'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>A "Game-Theoretic" Analysis of De-perimeterization</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Risk_game_map.png/300px-Risk_game_map.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 154px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Risk_game_map.png/300px-Risk_game_map.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;De-perimeterization is a word which (despite being impossible to pronounce or &lt;a href="https://www.opengroup.org/jericho/faq-misc.htm"&gt;spell correctly&lt;/a&gt;) is used more and more in discussions about security of organizations. Studying the effects of the disappearing perimeter in practice is difficult because organizations are complex and it is difficult to measure the quality of newly deployed security measures. Instead, let’s describe some of the issues of de-perimeterization here using an analogy with the well known board game &lt;a href="http://en.wikipedia.org/wiki/Risk_%28game%29"&gt;Risk&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In Risk players occupy countries by placing armies on them. Given a configuration of the board where every player has a number of countries with armies, players can attack countries owned by other players from a neighboring country. If all armies of the defending player are completely defeated then that country is conquered and the attacker can place a number of armies on it.&lt;br /&gt;&lt;br /&gt;Although luck is certainly a factor (the game uses no less than five dice) the general rule is that the more armies you bring to a fight, the bigger the odds that the country will (still) be yours at the end of the attack. When attacking, a great number of armies can be moved on to the newly conquered country. Armies can also be moved from one country to a neighboring country if owned by the same player when not attacking, but the number of movements is limited per turn. Playing Risk demonstrates that logistics is one of the most difficult parts of administering security.&lt;br /&gt;&lt;br /&gt;Countries are organized in six continents. Continents are a lot like organizations: they contain assets (countries, armies) and they have a perimeter. A player receives bonus armies at the start of every turn in which a continent was completely owned by that player and was successfully defended.&lt;br /&gt;&lt;br /&gt;Countries on the border of a continent form the perimeter of that continent. Perimeter countries need special attention because enemies need to first travel through perimeter countries before they can attack an inner country. Recall that if an attacker occupies any country of a continent held by a player, then the defender will not get his bonus at the beginning of their next turn. For the defender, moving most armies to the border countries seems therefore a good strategy. We will call this strategy &lt;i&gt;Perimeter Defense&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;At first, Perimeter Defense seems like a good idea. All players are each other’s enemies, after all. In practice, however, what happens is that players form temporary alliances so as to effectively attack a common enemy. The common enemy is typically the player with the most armies. This means, for example, that the members of an alliance agree to follow a certain attack strategy and agree not to attack each other for a number of turns so that they can keep borders between alliance-owned continents minimally manned. The armies no longer needed to defend alliance-owned borders can be better used to attack the common enemy with greater force.&lt;br /&gt;&lt;br /&gt;But there are far more complex forms of cooperation possible within an alliance. A pattern that is often seen is that one player in the alliance allows another player to move troops over territory owned by the first player. The first player creates a corridor of countries occupied with only 1 army on them. The countries in the corridor are easily conquered by the second player when he attacks them with a great number of armies. Since moving armies during an attack is free, this allows a player to move a great number of troops towards the common enemy’s border, circumventing the per-turn troop movement limits. The second player also leaves only 1 army on the countries in the corridor, allowing the first player to easily recover the original countries of his continent later on.&lt;br /&gt;&lt;br /&gt;So what are the alternatives to perimeter defense? It is tempting to think of &lt;i&gt;Defense in Depth&lt;/i&gt; as the complete opposite of Perimeter Defense. In the Risk analogy naive Defense in Depth means equally distributing one’s armies over every country of a continent, both inner and border countries. Obviously this means that it becomes easier for a single enemy to occupy a border country (which means the defender won’t get his bonus armies). Yet at least the continent is more difficult to completely conquer by attackers. It very much depends on the situation (the agenda of other players, alliance agreements) whether Defense in Depth is a good strategy.&lt;br /&gt;&lt;br /&gt;Defense in Depth also makes it more difficult to move armies to specific places, for example to allow a fellow alliance member to move troops across your continent. Yet, if one doesn’t completely trust the other players in the alliance a certain degree of Defense in Depth is actually a good thing. After all, when alliance member are moving troops through our corridors they should not be tempted too much to occupy our complete continent while they’re at it.&lt;br /&gt;&lt;br /&gt;The real world consisting of real organizations is in many aspects much more complex than than simple board game world, if only because the goals of organizations are much more complex than simply ‘winning the game’. Still, real organizations also deal with security strategies. Two organizations will work together if it is of benefit to both of them (although usually not to mount an attack on the security perimeter of some competitor). At the same time organizations need to restrict access to their assets from outsiders as much as possible.&lt;br /&gt;&lt;br /&gt;The problem is not that the perimeter is disappearing. The problem is that it is continually changing. The quality of a security strategy depends greatly on external forces such as the goals of other organizations. That these external forces change dynamically makes things even more complex.&lt;br /&gt;&lt;br /&gt;Perimeter Defense and Defense in Depth are still good concepts to use when defining a mixed security strategy but much more important seems to be the ability to quickly change strategy. If security controls are resilient rather than brittle (see Schneier’s book &lt;a href="http://www.amazon.com/Beyond-Fear-Thinking-Sensibly-Uncertain/dp/0387026207/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234277128&amp;amp;sr=8-1"&gt;Beyond Fear&lt;/a&gt; for an explanation of these concepts) then they can easily be used as part of a dynamically configurable perimeter.&lt;br /&gt;&lt;br /&gt;(Thanks to &lt;a href="http://www.win.tue.nl/%7Etimw/"&gt;Tim&lt;/a&gt;, Marcella, Victor, Suzana, Dragan, and Georgi for playing numerous games of Risk. Disclaimer: The author lost most of these games.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-1470405430667562386?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/1470405430667562386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/02/game-theoretic-analysis-of-de.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1470405430667562386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/1470405430667562386'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/02/game-theoretic-analysis-of-de.html' title='A &quot;Game-Theoretic&quot; Analysis of De-perimeterization'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4258496154335394031.post-2066645666666137885</id><published>2009-01-01T01:00:00.000-08:00</published><updated>2009-02-10T08:20:31.895-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='about'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>About this blog...</title><content type='html'>My new year's resolution for 2009: Become a blogger...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4258496154335394031-2066645666666137885?l=martijno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martijno.blogspot.com/feeds/2066645666666137885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://martijno.blogspot.com/2009/02/about-this-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2066645666666137885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4258496154335394031/posts/default/2066645666666137885'/><link rel='alternate' type='text/html' href='http://martijno.blogspot.com/2009/02/about-this-blog.html' title='About this blog...'/><author><name>Martijn Oostdijk</name><uri>https://profiles.google.com/114483155163632238156</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-igrxHXl_npU/AAAAAAAAAAI/AAAAAAAAAAA/9Q02tGsOY14/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
