sharepoint claims based auth

36
SharePoint Claims-Based Authentication Станислав Выщепан

Upload: -

Post on 15-Jun-2015

465 views

Category:

Technology


0 download

DESCRIPTION

Старая презентация про Claims Based Authentication, в свете SharePoint 2013 очень актуально. В ней раскрываются некоторые особенности работы c claims для администраторов и программистов.

TRANSCRIPT

Page 1: SharePoint Claims Based Auth

SharePointClaims-Based Authentication

Станислав Выщепан

Page 2: SharePoint Claims Based Auth

Краткое содержание Что такое claims (утверждения) Архитектура Claims-based Authentication Настройка CBA в SharePoint Источники утверждений (claims) Программные методы работы с claims

Page 3: SharePoint Claims Based Auth

Что такое утверждения (claims)

Page 4: SharePoint Claims Based Auth

Аутентификация vs Авторизация Аутентификация – проверка identity

пользователя Например паспорт гражданина РФ является

его identity

Авторизация – проверка прав пользователя Охранник в офисе, проверяет по паспорту в

какой организации вы работаете и дает вам ключ-карту для доступа только на тот этаж, где располагается организация

Page 5: SharePoint Claims Based Auth

Что такое claims? Паспорт гражданина РФ является его

identity Паспорт содержит множество атрибутов

человека Номер ФИО Дата рождения Место рождения итд…

Такой набор атрибутов, составляющий identity пользователя, называется claims

Page 6: SharePoint Claims Based Auth

Claims и Security Token Паспорт гражданина содержит

информацию об «издателе» Кем и когда выдан

Паспорт защищен от подделки С точки зрения Claims Based Authentication

паспорт гражданина является Security Token

Page 7: SharePoint Claims Based Auth

Claims и Security Token Security Token, как и паспорт гражданина,

состоит из набора Claims, и защищен от подделки

Каждый claim имеет некоторое имя (тип), значение и «издателя» (источник этого claim)

Page 8: SharePoint Claims Based Auth

Доверие и аутентификация Водительское удостоверение (ВУ) также

является identity человека, как и паспорт гражданина

В некоторых организациях принимают паспорт, но не принимают ВУ (не проходит аутентификация)

Издателю ВУ (ГАИ) не доверяют, а издателю паспорта (ФМС) доверяют

Аналогично в CBA приложение должно определить каким издателям оно доверяет

Page 9: SharePoint Claims Based Auth

Зачем это все1. Не хранить identity в приложении –

упрощение архитектуры, повышение безопасности

2. Федерация аутентификации – два непонятных слова вместе возможность использовать уже существующие источники

3. Стандартизация протоколов – повышение доступности и интероперабельности

Page 10: SharePoint Claims Based Auth

Архитектура CBA

Page 11: SharePoint Claims Based Auth

Типовая картинка

Page 12: SharePoint Claims Based Auth

Терминология STS – Security Token Service – веб сервис,

который выдает Security Token по запросу IP – Identity Provider – некоторая служба,

выдающая claims RP – Relying Party – приложение,

принимающее claims IP и RP имеют свои STS

IP-STS – выдает claims из некоторого хранилища («издателя»)

RP-STS – проверяет, фильтрует, преобразует и дополняет claims

Page 13: SharePoint Claims Based Auth

Стандарты WS-Federation и WS-Trust

По префиксам WS- можно догадаться что описывают протоколы веб-сервисов (STS)

SAML – Security Application Markup Language – язык разметки для Security Token На базе XML, что не удивительно

OAuth – идея та же, более легковесная реализация, например для REST веб-сервисов Актуальная версия 2.0

Page 14: SharePoint Claims Based Auth

Библиотеки и компоненты Windows Identity Foundation

http://msdn.microsoft.com/ru-ru/library/ee748475.aspx

DotNetOpenAuth http://www.dotnetopenauth.net/

Azure Access Control Service https://www.windowsazure.com/en-us/develop/net/

how-to-guides/access-control/ Может выступать в качестве RP-STS

Page 15: SharePoint Claims Based Auth

Настройка CBA в SharePoint

Page 16: SharePoint Claims Based Auth

Classic Mode vs Claims Mode По-умолчанию веб-приложения создаются

в classic mode Аутентификация в домене Windows

Можно переключить на CBA При создании приложения При расширении в дополнительную зону В существующей конфигурации (нехорошая

операция) Между сервисами и между фермами

только CBA

В claims mode немного усложняется использование веб-сервисов

Page 17: SharePoint Claims Based Auth

Архитектура CBA в SharePoint SharePoint имеет свой RP-STS, называется

SecurityTokenService SecurityTokenService поддерживает работу

с Локальным AD Провайдерами FBA (ASP.NET Membership) Доверенными IP

Можно указать несколько одновременно

Внутри SharePoint это всегда SPUser

Page 18: SharePoint Claims Based Auth
Page 19: SharePoint Claims Based Auth

Настройка FBA1. Создать приложение с CBA, включить только

windows аутентификацию2. Создать базу ASP.NET Membership с помощью

aspnet_regsql3. Добавить разделы в web.config приложения,

central administration, STS (руками на каждой машине)

4. Включить FBA в приложении

Подробные описания https://dplotnikov.wordpress.com/2011/08/31/%D0%BD

%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-fba-%D0%B2-sharepoint-2010/

http://blogs.technet.com/b/speschka/archive/2009/11/05/configuring-forms-based-authentication-in-sharepoint-2010.aspx

Page 20: SharePoint Claims Based Auth

Настройка доверия Чтобы добавить доверенного поставщика

необходимо1. Сертификат подписи Security Token2. Realm (URN)3. Адрес IP-STS для входа4. Схема отображения claims

Page 21: SharePoint Claims Based Auth

Настройка доверия Шаги:

1. Получить корневой сертификат от провайдера

2. Добавить сертификат в trusted root authority3. Создать claim mapping, указав один из claim

как identity4. Создать Trusted Identity Provider5. Создать или расширить веб-приложение с

https и CBA6. Добавить доверенный провайдер в качестве

источника claims7. Дать права пользователю внешней системы

Page 22: SharePoint Claims Based Auth

Настройка доверия $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2

(“root.cer") New-SPTrustedRootAuthority -Name "Token Signing Cert Parent" -Certificate $root $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2

(“cert.cer ") New-SPTrustedRootAuthority -Name "Token Signing Cert" -Certificate $cert

$map = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming

$map2 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" –SameAsIncoming

$ap = New-SPTrustedIdentityTokenIssuer -Name “Contoso ADFS" -Description "SharePoint secured by SAML" -realm $realm -ImportTrustCertificate $cert -ClaimsMappings $map,$map2 -SignInUrl "https://adfs.contoso.com/adfs/ls" -IdentifierClaim "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"

Page 23: SharePoint Claims Based Auth

Источники утверждений (claims)

Page 24: SharePoint Claims Based Auth

Доступные провайдеры Azure Access Control

Выступает в качестве промежуточного звена Поддерживает множество провайдеров:

LiveId Google Facebook Yahoo OpenId Анонимная аутентификация по email Другие WS-Federation сервисы

Поддерживает отображение claim Недостаток один – стоит денег Идеально подходит для сценария интернет-

сайтов

Page 25: SharePoint Claims Based Auth

Доступные провайдеры ADFS – Active Directory Federation Services

Актуальная версия 2.0 Позволяет пользователям из одного домена

аутентифицироваться на сервисах в другом домене под своими доменными учетными записями

Не передает пароли вне доменной сети SharePoint также умеет синхронизировать

ADFS с профилями пользователей Недостатки:

Сложно настраивать Нужен AD

Идеально подходит для сценариев партнерских порталов в организации

Page 26: SharePoint Claims Based Auth

Доступные провайдеры Live ID

Имеет WS-Federation точку доступа Применимо только в одном случае:

Активное использование сервисов Microsoft на портале

Во всех остальных случаях лучше Azure Access Control

Page 29: SharePoint Claims Based Auth

С2WTS & SSS С2WTS Преобразует Security Token в

Windows Token для доступа к внешним системам Например SQL Server

SSS – отображает входные учетные записи на выходные Нужно для доступа к внешним системам

Page 30: SharePoint Claims Based Auth

Программные методы работы с claims

Page 31: SharePoint Claims Based Auth

Авторизация IClaimsIdentity currentIdentity =

System.Threading.Thread.CurrentPrincipal.Identity as IClaimsIdentity;

foreach (Claim claim in currentIdentity.Claims) { }

Только в UI коде

Page 32: SharePoint Claims Based Auth

Получение SPUser SPClaim c = new SPClaim(“claimType", 

                        “claimValue",                         ClaimValueTypes.String,                         SPOriginalIssuers.Format(                            SPOriginalIssuerType.TrustedProvider,                             “Claim Provider Name")                        );

string encodedClaim = c.ToEncodedString(); // Use encodedClaim as loginName Web.EnsureUser(encodedClaim);

Page 33: SharePoint Claims Based Auth

Claims providers Есть возможность создавать классы, которые

будут дополнять входящие claims Также claim provider расширяют people picker Очень удобно использовать совместно с FBA Полученные claims транслируются в

исходящие claims Класс наследник SPClaimsProvider http://

msdn.microsoft.com/en-us/library/ee537299.aspx http

://msdn.microsoft.com/en-us/library/gg615945.aspx

Page 34: SharePoint Claims Based Auth

Вызов claims-aware веб-сервисов из кода SPChannelFactoryOperations.ConfigureCredentials<InterfaceType>

(client.ChannelFactory, Microsoft.SharePoint.SPServiceAuthenticationMode.Claims);

SPChannelFactoryOperations.CreateChannelActingAsLoggedOnUser <InterfaceType>(client.ChannelFactory, endpoint);

И много всего полезного в пространстве имен Microsoft.SharePoint.Administration.Claims http://msdn.microsoft.com/en-us/library/ee552954.aspx

Page 36: SharePoint Claims Based Auth

Вопросы?