IdP Shibboleth RP Sharepoint, OWA,.Net Jean Marie THIA

Preview:

Citation preview

IdP ShibbolethRP Sharepoint, OWA, .Net

Jean Marie THIA

Journée Fédération – 24 janvier 2011

As an application designer or developer, imagine a world where you don't have to worry about authentication. Imagine instead that all requests to your application already include the information you need to make access control decisions and to personalize the application for the user.

Preface of : A guide to claims-based Identity and Access Control (http://msdn.microsoft.com/en-us/library/ff359103(lightweight).aspx)

Journée Fédération – 24 janvier 2011

Agenda

Intégration sans revendications◦ADFS v1x◦shib4Net / shib4moss

Les revendications◦Revendication (Claim)◦WIF / STS / ADFS

Interopérabilité◦ADFS◦WIF

ConclusionQuestions

Intégrationsans claims

Journée Fédération – 24 janvier 2011

ADFS v1

Patch nécessaire pour IdP 1.3Patch non préconisé par la fédération.

Ne pas utiliser

Journée Fédération – 24 janvier 2011

shib4net / shib4moss

Couche de mapping entre SP et .NetSP shibboleth pour IIS

Sourcesup.cru.fr/shib4net

Journée Fédération – 24 janvier 2011

Shib4net - expérience

Non utilisé à l’UPMCDes questions de la part de Novell et

SWITCHProjet d’utilisation pour EDUGAIN

◦Création de l’utilisateur dans MOSS◦Creation de l’utilisateur dans AD

Windows Identity Foundation

aka WIF

Journée Fédération – 24 janvier 2011

Revendication

Un ensemble d’informations

Dans un jeton de sécuritéSigné par un émetteur

L’équivalent des attributs Shibboleth

Web App/Service

UPN :Roles :Email :

GivenName :LastName :isOver21 :

thiaPM, developper, sysAdminjean-marie.thia@upmc.frJean MarieThiaTrue

Journée Fédération – 24 janvier 2011

Revendications : modèle objet

Toutes les propriétés sont transmises sous forme de chaîne de caratctères

Le type de la valeur est défini par la proprité ValueType Microsoft.IdentityModel.ClaimValueTypes est une énumération de ces valeurs (date, datetime, boolean, integer, etc.)

public class Claim { // some members omitted for brevity public virtual string ClaimType { get; } public virtual string Value { get; } public virtual string ValueType { get; } public virtual IDictionnary<string, string> Properties; public virtual string Issuer { get; } public virtual string OriginalIssuer { get; } public virtual string IClaimIdentity Subject { get; }}

IClaimsPrincipal

IClaimsIdentityIClaimsIdentity

ClaimClaimType = “Name”

Value = “Bob”Issuer = “WLID”

Subject

ClaimClaimType = “Name”

Value = “Bob”Issuer = “WLID”

Subject

ClaimClaimType = “Name”

Value = “Bob”Issuer = “WLID”

Subject

Journée Fédération – 24 janvier 2011

ADFS

A Secure Token Service for ADHandles authentication,Extracts, transforms claimsWith rule and

policy engineBased on WIF

Interopérabilitéavec claims

Journée Fédération – 24 janvier 2011

ADFS v2

Compatible SAML 2◦Adaptateur de protocole pour WIF

Protocole SAML 2.0◦IdP / SP Lite◦GSA 1.5

Indispensable avec Shibboleth 2Interopérabilité : Sun, Oracle, CA, Novell,

Ping Identity

Journée Fédération – 24 janvier 2011

ADFS v2 - Guides

Sharepoint 2010◦Federated Collaboration with Shibboleth 2.0 and

SharePoint 2010 Technologies ◦ http://technet.microsoft.com/en-us/library/adfs2-step-by-step-guides

%28WS.10%29.aspx

Outlook Web Access 2010◦Exposing OWA 2010 with AD FS 2.0 to other

organizations◦ http://www.microsoft.com/france/interop/ressources/documents.aspx

In Common◦AD FS 2.0 Step-by-Step Guide: Federation with

Shibboleth 2 and the InCommon Federation

Journée Fédération – 24 janvier 2011

.Net

IsInRole fonctionne toujours◦Un mapping à déclarer dans web.config◦Compatibilité avec l’existant

Journée Fédération – 24 janvier 2011

.Net : Revendication

IClaimsIdentity id =((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];

// you can use a simple foreach loop to find a claim...string usersEmail = null;foreach (Claim c in id.Claims) { if (c.ClaimType == System.IdentityModel.Claims.ClaimTypes.Email) { UsersEmail = c.Value; break; }}

// you can also use LINQ to find a claimstring usersFirstName = (from c in id.Claims where c.ClaimType == System.IdentityModel.Claims.ClaimTypes.GivenName select c).First().Value;

Journée Fédération – 24 janvier 2011

Conclusion

Plus d’écueil techniquesolution mature

◦WIF non SAML 2◦Guides d’interopérabilité

Principale difficulté◦Les autorisations

Journée Fédération – 24 janvier 2011

Quelques liens

Patterns & Practices : A guide to claims-based to Identity and Access Control http://msdn.microsoft.com/en-us/library/ff423674.aspx

MSDNWIF : http://msdn.microsoft.com/en-us/library/ee748484.aspxIdM : http://msdn.microsoft.com/en-us/security/aa570351.aspx

Technethttp://technet.microsoft.com/fr-fr/library/adfs2(v=WS.10).aspx

Microsoft connecthttps://connect.microsoft.com/site642

BlogsGeneva team - http://blogs.msdn.com/card/Dominick Baier - http://www.leastprivilege.com Vittorio Bertocci - http://blogs.msdn.com/vbertocci/

Journée Fédération – 24 janvier 2011

Contributions

Cas4net◦http://sourcesup.cru.fr/cas4net/◦http module for ASP.NET◦IIS7 http module for CAS

Shib4net◦http://sourcesup.cru.fr/shib4net/

Questions ?Jean-Marie.THIA@upmc.fr

Merci de votre attention

Recommended