OpenAM – HOTP HMAC One-Time Password 4 5 OpenAM prompts for AD UserName/ Password credentials User vetted and managed locally in the Active Directory LDAP Secure Token One Time Password browser 2 UAG delegates authentication to ADFS 3 ADFS redirects to the OpenAM Authentication Server that is also protected by the UAG. ADFS defines OpenAM as an Account Provider. 9 SAML Assertion (token) received by ADFS 10 SAML Token transformed into Claim Token and passed to SharePoint in the Request Header SAML Assertion passed to OAG in the Request Header If the credentials are invalid access is denied OpenAM sends the One-Time Password (OTP) to cell phone/email account via SMTP 1 7 OpenAM prompts for OTP 8 OpenAM validates OTP access 9 SharePoint 2010 Portal resource requested that is protected by the UAG ADFS Trunk OpenAM validates credentials access 6 1 10 UAG SP1 Define ADFS Authenticated Trunk with ADFS Authenticated Applications If the OTP is invalid access is denied 6 OpenAM returns the SAML Assertion 7 or 3 10 9 9 4 2 .0 a s FS nAM er AD Ope rovid e P 2 nAM Ope cation ti n e Auth erver 5 S 8 If the user has a hard token then the user enter the RADIUS password at the same time they enter their credentials for the AD. Steps 6-8 are skipped. fin nt De cou Ac 3 10 10 5 RADIUS Server OAG Portal SAML Assertion 5 SharePoint Portal Claims Based SAML Active Directory Two-Factor Authentication using a One-Time Password OTP Delivered or OTP Generated by Hard Token The above diagram depicts the potential use for OpenAM in the role of authentication server. OpenAM can work with the current SafeWord Tokens validating against the RADIUS server but it also has a one time password (OTP) authentication module. The authentication module is based on the HMAC-based One Time Password (HOTP) algorithm (http://www.ietf.org/rfc/rfc2104.txt http://www.ietf.org/rfc/rfc4226.txt). HMAC stands for Keyed-Hash Message Authentication Code and is a FIPS standard (http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf). The UAG provides the boundary security into our network. ADFS provides the authentication flow from the UAG and transforms SAML assertions into the Claim Token used by SharePoint in claims based authentication. OpenAM provides the authentication process with the HOTP and RADIUS. OpenAM also provides the SAML 2.0 support where ADFS provides SAML 1.1 support. OpenAM – HOTP HMAC One-Time Password The HOTP authentication module works in tandem with one or more other authentication modules (such as LDAP or Active Directory) as part of an authentication chain. Authentication to at least one of the other modules in the chain must be successful before attempting HOTP authentication. HOTP requires the user profile that is obtained by a successful authentication to one of the prior authentication module(s) in the authentication chain. Configuring HOTP as part of an authentication chain constitutes two-factor authentication where the authentication process comprises something the user has (a cell phone or email account) as well as something the user knows (the one-time password in addition to their username/password authentication to the LDAP or Active Directory). OpenAM – HOTP HMAC One-Time Password If the authentication to the LDAP is successful the user is presented with the form to request the OTP Code. The user receives the One Time Password (OTP) in an email or text message on their cell phone. The email message has a subject of ‘OpenAM One Time Password’ and the message looks like: If received on the user’s cell phone the text message would be similar to the following: Urgent MSG From: opensso@sun.com (OpenAM One Time Password) Your OpenAm On Time Password: 01994051 OpenAM – HOTP HMAC One-Time Password To change who the message is from and/or the message you need to change the amAuthHOTP.properties files. Change to: messageFrom=CLIX.Helpdesk@doj.ca.gov messageSubject=CLIX One Time Password messageContent=Your CLIX One Time Password : Once the user has received the OTP they would enter it in form and click the ‘Submit’ button to continue the authentication process. To communicate the OTP securely between parties, a hashed message authentication code (HMAC) is used to encode the data. When a onetime password is requested, the HOTP authentication module stores the OTP in memory, appends an authentication tag to it that is computed as a function of the one-time password and the HMAC, and sends it to the user. When the user returns the one time password, the HOTP authentication module will compare the one received with the one it stores in memory and authentication succeeds only if the values match. Note: OpenAM uses a secure hash algorithm (SHA-1) to generate the HMAC code. SHA-1 is a cryptographic hash algorithm published by the United States Government. It produces a 160-bit hash value from an arbitrary length string. OpenAM – HOTP HMAC One-Time Password In order for HOTP authentication to work the user must be set up in the Active Directory (LDAP) with a valid email address and/or telephone entry. The telephone entry must be a cell phone number and the carrier has to be appended to the number. For Instance a Verizon Wireless number would be entered as: 9165551212@vtext.com How long the OTP is valid for is a configurable option in OpenAM. The default is five minutes but can be set to as little as one minute. The length of the OTP can be set to either six or eight digits. OpenAM – HOTP HMAC One-Time Password Configuring OpenAM in conjunction with the UAG and ADFS implements a federated model of two factor authentication for the user base we manage. It may even provide the necessary pieces to federate with other federations but further investigation into the details of the governance model for each federation is required. The approach would be to first implement the two factor HOTP model for the SharePoint 2010 Portal. Accessing the SharePoint Portal would encompass the following steps: An unauthenticated user attempts to access the SharePoint Portal via the url that is hosted/protected by the UAG. The UAG delegates the authentication process to ADFS. ADFS would be configured to use OpenAM as the account provider meaning that ADFS would send a browser redirect to the OpenAM Authentication Server via a proxy URL that is hosted/protected by the UAG. Note: We would most likely need to create a custom authentication module for the UAG protecting OpenAM that inspects the request header looking for evidence that the request came from the ADFS redirect. OpenAM would then send to the browser the initial request for the username/password credentials used by the Active Directory. If the credential were valid OpenAM would send via SMTP a one-time password (OTP) to the user's cell phone and/or email account. OpenAM sends to the browser a form requesting the OTP. The user would use the OTP received to submit back to OpenAM. If the OTP is valid OpenAM sends a SAML Assertion back to ADFS. ADFS transforms the SAML Assertion into a SAML Claim Token that SharePoint uses. With the user now authenticated ADFS redirects (via the UAG) back to the original url requested with the SAML Claim Token. OpenAM – HOTP HMAC One-Time Password 4 5 OpenAM prompts for AD UserName/ Password credentials User vetted and managed locally in the Active Directory LDAP browser 2 UAG delegates authentication to ADFS 3 ADFS redirects to the OpenAM Authentication Server that is also protected by the UAG. ADFS defines OpenAM as an Account Provider. 9 SAML Assertion (token) received by ADFS 10 SAML Token transformed into Claim Token and passed to SharePoint in the Request Header If the credentials are invalid access is denied OpenAM sends the One-Time Password (OTP) to cell phone/email account via SMTP 1 7 OpenAM prompts for OTP 8 OpenAM validates OTP access 9 SharePoint 2010 Portal resource requested that is protected by the UAG ADFS Trunk OpenAM validates credentials access 6 1 10 UAG SP1 Define ADFS Authenticated Trunk with ADFS Authenticated Applications If the OTP is invalid access is denied 6 OpenAM returns the SAML Assertion 7 3 9 9 4 2 .0 a s FS enAMider D v p A 2 M penA tion 8 O a c i t n e Auth erver 5 S o e O Pr fin nt De cou c A 3 10 5 SharePoint Portal Claims Based SAML Active Directory SharePoint 2010 Portal Access with Two-Factor Authentication using a One-Time Password OpenAM – HOTP HMAC One-Time Password Once the SharePoint Portal use case has been completed successfully the next step would be to integrate the OAG Portal with the hard token OTP (Secure Token) and the HOTP such that we can utilizes the existing hard tokens and lower future costs using the HOTP delivery module for new users. 4 5 OpenAM prompts for AD UserName/ Password credentials User vetted and managed locally in the Active Directory LDAP Secure Token One Time Password browser 2 UAG delegates authentication to ADFS 3 ADFS redirects to the OpenAM Authentication Server that is also protected by the UAG. ADFS defines OpenAM as an Account Provider. 9 SAML Assertion (token) received by ADFS If the credentials are invalid access is denied OpenAM sends the One-Time Password (OTP) to cell phone/email account via SMTP 1 7 OpenAM prompts for OTP 8 OpenAM validates OTP access 9 SharePoint 2010 Portal resource requested that is protected by the UAG ADFS Trunk OpenAM validates credentials access 6 1 10 UAG SP1 If the OTP is invalid access is denied 6 OpenAM returns the SAML Assertion 10 Define ADFS Authenticated Trunk with ADFS Authenticated Applications 7 3 SAML Assertion passed to OAG in the Request Header 9 9 4 2 M penA tion 8 O ntica e h t Au rver 5 Se If the user has a hard token then the user enter the RADIUS password at the same time they enter their credentials for the AD. Steps 6-8 are skipped. 2 .0 a s FS enAMider D v p A e O Pr fin nt De cou Ac 3 o 10 5 RADIUS Server OAG Portal SAML Assertion 5 Active Directory Two-Factor Authentication using a One-Time Password OTP Delivered or OTP Generated by Hard Token At this stage users should be cross authenticated to both the SharePoint Portal and the OAG Portal where applicable. OpenAM – HOTP HMAC One-Time Password Some definitions from Wikipedia: HMAC From Wikipedia http://en.wikipedia.org/wiki/HMAC In cryptography, HMAC (Hash-based Message Authentication Code), is a specific construction for calculating a message authentication code (MAC) involving a cryptographic hash function in combination with a secret key. As with any MAC, it may be used to simultaneously verify both the data integrity and the authenticity of a message. Any cryptographic hash function, such as MD5 or SHA-1, may be used in the calculation of an HMAC; the resulting MAC algorithm is termed HMAC-MD5 or HMAC-SHA1 accordingly. The cryptographic strength of the HMAC depends upon the cryptographic strength of the underlying hash function, the size of its hash output length in bits and on the size and quality of the cryptographic key. HOTP From Wikipedia http://en.wikipedia.org/wiki/HOTP HOTP is an HMAC-based One Time Password algorithm. It is a cornerstone of Initiative For Open Authentication (OATH). HOTP was published as an Information IETF RFC 4226 in December 2005, documenting the algorithm along with a Java implementation. Since then, the algorithms was adopted by many companies worldwide[citation needed] and became the world's leading standard[citation needed] for eventbased OTP authentication. The HOTP algorithm is a freely available open standard. OTP From Wikipedia http://en.wikipedia.org/wiki/One-time_password A one-time password (OTP) is a password that is valid for only one login session or transaction. OTPs avoid a number of shortcomings that are associated with traditional (static) passwords. The most important shortcoming that is addressed by OTPs is that, in contrast to static passwords, they are not vulnerable to replay attacks. This means that, if a potential intruder manages to record an OTP that was already used to log into a service or to conduct a transaction, he or she will not be able to abuse it since it will be no longer valid. OpenAM – HOTP HMAC One-Time Password OTP generation algorithms typically make use of randomness. This is necessary because otherwise it would be easy to predict future OTPs from observing previous ones. Concrete OTP algorithms vary greatly in their details. Various approaches for the generation of OTPs are listed below. Based on time-synchronization between the authentication server and the client providing the password (OTPs are valid only for a short period of time) Using a mathematical algorithm to generate a new password based on the previous password (OTPs are, effectively a chain and must be used in a predefined order). Using a mathematical algorithm where the new password is based on a challenge (e.g., a random number chosen by the authentication server or transaction details) and/or a counter. There are also different ways to make the user aware of the next OTP to use. Some systems use special electronic tokens that the user carries and that generate OTPs and show them using a small display. Other systems consist of software that runs on the user's mobile phone. Yet other systems generate OTPs on the server-side and send them to the user using an out-of-band channel such as SMS messaging. Finally, in some systems, OTPs are printed on paper that the user is required to carry with them. Note: As far as where the HOTP fits within the NIST Level definitions as indentified in SP80063 it not easy to say. In reading through the levels there is not an exact match but I’m of the opinion that the use of the HOTP in conjunction with the Active Directory authentication fits into the NIST Level 3 Authentication Assurance arena. The parts and pieces are there just in a different configuration then what is defined. However, this is simply my opinion.