SlideShare a Scribd company logo
SharePoint
Claims-Based Authentication
Станислав Выщепан
Краткое содержание







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

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



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

Авторизация – проверка прав пользователя


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

Паспорт гражданина РФ является его identity
Паспорт содержит множество атрибутов человека









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

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

Паспорт гражданина содержит информацию об
«издателе»





Кем и когда выдан

Паспорт защищен от подделки
С точки зрения Claims Based Authentication паспорт
гражданина является Security Token
Claims и Security Token



Security Token, как и паспорт гражданина, состоит из
набора Claims, и защищен от подделки
Каждый claim имеет некоторое имя (тип), значение и
«издателя» (источник этого claim)
Доверие и аутентификация






Водительское удостоверение (ВУ) также является
identity человека, как и паспорт гражданина
В некоторых организациях принимают паспорт, но не
принимают ВУ (не проходит аутентификация)
Издателю ВУ (ГАИ) не доверяют, а издателю паспорта
(ФМС) доверяют
Аналогично в CBA приложение должно определить
каким издателям оно доверяет
Зачем это все
1.
2.

3.

Не хранить identity в приложении – упрощение
архитектуры, повышение безопасности
Федерация аутентификации – два непонятных слова
вместе возможность использовать уже
существующие источники
Стандартизация протоколов – повышение
доступности и интероперабельности
Архитектура CBA
Типовая картинка
Терминология






STS – Security Token Service – веб сервис, который
выдает Security Token по запросу
IP – Identity Provider – некоторая служба, выдающая
claims
RP – Relying Party – приложение, принимающее
claims
IP и RP имеют свои STS





IP-STS – выдает claims из некоторого хранилища
(«издателя»)
RP-STS – проверяет, фильтрует, преобразует и дополняет
claims
Стандарты


WS-Federation и WS-Trust




SAML – Security Application Markup Language –
язык разметки для Security Token




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

На базе XML, что не удивительно

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

Актуальная версия 2.0
Библиотеки и компоненты


Windows Identity Foundation




DotNetOpenAuth




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

http://www.dotnetopenauth.net/

Azure Access Control Service



https://www.windowsazure.com/en-us/develop/net/howto-guides/access-control/
Может выступать в качестве RP-STS
Настройка CBA в SharePoint
Classic Mode vs Claims Mode


По-умолчанию веб-приложения создаются в classic
mode




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

Можно переключить на CBA





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



Между сервисами и между фермами только CBA



В claims mode немного усложняется использование
веб-сервисов
Архитектура CBA в SharePoint



SharePoint имеет свой RP-STS, называется
SecurityTokenService
SecurityTokenService поддерживает работу с




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



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



Внутри SharePoint это всегда SPUser
SharePoint Claims Based Auth
Настройка FBA
Создать приложение с CBA, включить только windows
аутентификацию
Создать базу ASP.NET Membership с помощью
aspnet_regsql
Добавить разделы в web.config приложения, central
administration, STS (руками на каждой машине)
Включить FBA в приложении

1.
2.
3.
4.


Подробные описания




https://dplotnikov.wordpress.com/2011/08/31/%D0%BD%D0%B
0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D
0%B0-fba-%D0%B2-sharepoint-2010/
http://blogs.technet.com/b/speschka/archive/2009/11/05/config
uring-forms-based-authentication-in-sharepoint-2010.aspx
Настройка доверия


Чтобы добавить доверенного поставщика необходимо
1.
2.
3.
4.

Сертификат подписи Security Token
Realm (URN)
Адрес IP-STS для входа
Схема отображения claims
Настройка доверия


Шаги:
1.
2.
3.
4.
5.

6.
7.

Получить корневой сертификат от провайдера
Добавить сертификат в trusted root authority
Создать claim mapping, указав один из claim как identity
Создать Trusted Identity Provider
Создать или расширить веб-приложение с https и CBA
Добавить доверенный провайдер в качестве источника
claims
Дать права пользователю внешней системы
Настройка доверия











$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"
Источники утверждений (claims)
Доступные провайдеры


Azure Access Control



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






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

Поддерживает отображение claim

Недостаток один – стоит денег
Идеально подходит для сценария интернет-сайтов
Доступные провайдеры


ADFS – Active Directory Federation Services








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



Актуальная версия 2.0
Позволяет пользователям из одного домена
аутентифицироваться на сервисах в другом домене под своими
доменными учетными записями
Не передает пароли вне доменной сети

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

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

Live ID




Применимо только в одном случае:




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

Во всех остальных случаях лучше Azure Access
Control
Руководства по настройке


ADFS




LiveID




http://blogs.technet.com/b/speschka/archive/2010/07/30/c
onfiguring-sharepoint-2010-and-adfs-v2-end-to-end.aspx

http://www.wictorwilen.se/Post/Visual-guide-to-AzureAccess-Controls-Services-authentication-withSharePoint-2010-Index-Post.aspx

Azure Access Control


http://www.wictorwilen.se/Post/Visual-guide-to-Windows-LiveID-authentication-with-SharePoint-2010-part-1.aspx
ADFS и служба профилей





Настраивается как обычная синхронизация
http://bpmsharepoint.iquestint.com/2012/03/14/share
point-2010-synchronization-between-ad-and-userprofiles/
http://blogs.msdn.com/b/brporter/archive/2010/07/19/
trusted-identity-providers-amp-user-profilesynchronization.aspx
С2WTS & SSS


С2WTS Преобразует Security Token в Windows
Token для доступа к внешним системам




Например SQL Server

SSS – отображает входные учетные записи на
выходные


Нужно для доступа к внешним системам
Программные методы работы с
claims
Авторизация




IClaimsIdentity currentIdentity =
System.Threading.Thread.CurrentPrincipal.Identity
as IClaimsIdentity;
foreach (Claim claim in currentIdentity.Claims) { }
Только в UI коде
Получение SPUser







SPClaim c = new SPClaim(“claimType",
“claimValue",
ClaimValueTypes.String,
SPOriginalIssuers.Format(
SPOriginalIssuerType.TrustedProvi
der,
“Claim Provider Name")
);
string encodedClaim = c.ToEncodedString();
// Use encodedClaim as loginName
Web.EnsureUser(encodedClaim);
Claims providers









Есть возможность создавать классы, которые будут
дополнять входящие claims
Также claim provider расширяют people picker
Очень удобно использовать совместно с FBA
Полученные claims транслируются в исходящие
claims
Класс наследник SPClaimsProvider
http://msdn.microsoft.com/enus/library/ee537299.aspx
http://msdn.microsoft.com/enus/library/gg615945.aspx
Вызов 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
Полезные ссылки


http://msdn.microsoft.com/enus/library/gg430136.aspx



http://blogs.msdn.com/b/ericwhite/archive/2010/06/1
8/consuming-a-claims-enabled-wcf-web-service-asan-sharepoint-2010-external-content-type.aspx



http://www.liquidmercurysolutions.com/whatwedo/kn
owhow/blog/Lists/Posts/Post.aspx?ID=2
Вопросы?

More Related Content

PPT
RESTful Architechture (Highload++ 2008)
PPTX
MMS 2010: Secure collaboration
PPT
Dv w2k-sec-concepts
PPTX
Идентификация и контроль доступа в приложениях Windows Azure
PPSX
Microsoft. Алексей Солодовников. "Технологии безопасности и защиты информации...
PPTX
Mythbusters - Web Application Security
PPTX
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
PDF
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
RESTful Architechture (Highload++ 2008)
MMS 2010: Secure collaboration
Dv w2k-sec-concepts
Идентификация и контроль доступа в приложениях Windows Azure
Microsoft. Алексей Солодовников. "Технологии безопасности и защиты информации...
Mythbusters - Web Application Security
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...

Similar to SharePoint Claims Based Auth (7)

PDF
George Lagoda - Альтернативное использование вэб сервисов SharePoint со сторо...
PPTX
Артём Журавлёв «OAuth для .NET»
PDF
7.2. Alternative sharepoint hacking
PDF
Практика обнаружения атак, использующих легальные инструменты
PDF
WatchGuard Authpoint
PPT
Sergey Gordeychik, Application Security in real word
PDF
Gemalto - SAM (SafeNet Authentication Manager)
George Lagoda - Альтернативное использование вэб сервисов SharePoint со сторо...
Артём Журавлёв «OAuth для .NET»
7.2. Alternative sharepoint hacking
Практика обнаружения атак, использующих легальные инструменты
WatchGuard Authpoint
Sergey Gordeychik, Application Security in real word
Gemalto - SAM (SafeNet Authentication Manager)
Ad

More from Stas Vyschepan (7)

PPTX
Вычисление бета-коэффициента и ожидаемой ставки доходности капитала в модели ...
PPTX
Share point 2016 Что нового
PPTX
PowerBI — новые возможности анализа данных в облаке
PPTX
Разработка веб-приложений с помощью TypeScript
PPTX
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
PPTX
Искусство управления SharePoint
PPTX
SharePoint Code Quality
Вычисление бета-коэффициента и ожидаемой ставки доходности капитала в модели ...
Share point 2016 Что нового
PowerBI — новые возможности анализа данных в облаке
Разработка веб-приложений с помощью TypeScript
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Искусство управления SharePoint
SharePoint Code Quality
Ad

SharePoint Claims Based Auth

  • 2. Краткое содержание      Что такое claims (утверждения) Архитектура Claims-based Authentication Настройка CBA в SharePoint Источники утверждений (claims) Программные методы работы с claims
  • 4. Аутентификация vs Авторизация  Аутентификация – проверка identity пользователя   Например паспорт гражданина РФ является его identity Авторизация – проверка прав пользователя  Охранник в офисе, проверяет по паспорту в какой организации вы работаете и дает вам ключ-карту для доступа только на тот этаж, где располагается организация
  • 5. Что такое claims?   Паспорт гражданина РФ является его identity Паспорт содержит множество атрибутов человека       Номер ФИО Дата рождения Место рождения итд… Такой набор атрибутов, составляющий identity пользователя, называется claims
  • 6. Claims и Security Token  Паспорт гражданина содержит информацию об «издателе»    Кем и когда выдан Паспорт защищен от подделки С точки зрения Claims Based Authentication паспорт гражданина является Security Token
  • 7. Claims и Security Token   Security Token, как и паспорт гражданина, состоит из набора Claims, и защищен от подделки Каждый claim имеет некоторое имя (тип), значение и «издателя» (источник этого claim)
  • 8. Доверие и аутентификация     Водительское удостоверение (ВУ) также является identity человека, как и паспорт гражданина В некоторых организациях принимают паспорт, но не принимают ВУ (не проходит аутентификация) Издателю ВУ (ГАИ) не доверяют, а издателю паспорта (ФМС) доверяют Аналогично в CBA приложение должно определить каким издателям оно доверяет
  • 9. Зачем это все 1. 2. 3. Не хранить identity в приложении – упрощение архитектуры, повышение безопасности Федерация аутентификации – два непонятных слова вместе возможность использовать уже существующие источники Стандартизация протоколов – повышение доступности и интероперабельности
  • 12. Терминология     STS – Security Token Service – веб сервис, который выдает Security Token по запросу IP – Identity Provider – некоторая служба, выдающая claims RP – Relying Party – приложение, принимающее claims IP и RP имеют свои STS    IP-STS – выдает claims из некоторого хранилища («издателя») RP-STS – проверяет, фильтрует, преобразует и дополняет claims
  • 13. Стандарты  WS-Federation и WS-Trust   SAML – Security Application Markup Language – язык разметки для Security Token   По префиксам WS- можно догадаться что описывают протоколы веб-сервисов (STS) На базе XML, что не удивительно OAuth – идея та же, более легковесная реализация, например для REST веб-сервисов  Актуальная версия 2.0
  • 14. Библиотеки и компоненты  Windows Identity Foundation   DotNetOpenAuth   http://msdn.microsoft.com/ru-ru/library/ee748475.aspx http://www.dotnetopenauth.net/ Azure Access Control Service   https://www.windowsazure.com/en-us/develop/net/howto-guides/access-control/ Может выступать в качестве RP-STS
  • 16. Classic Mode vs Claims Mode  По-умолчанию веб-приложения создаются в classic mode   Аутентификация в домене Windows Можно переключить на CBA    При создании приложения При расширении в дополнительную зону В существующей конфигурации (нехорошая операция)  Между сервисами и между фермами только CBA  В claims mode немного усложняется использование веб-сервисов
  • 17. Архитектура CBA в SharePoint   SharePoint имеет свой RP-STS, называется SecurityTokenService SecurityTokenService поддерживает работу с    Локальным AD Провайдерами FBA (ASP.NET Membership) Доверенными IP  Можно указать несколько одновременно  Внутри SharePoint это всегда SPUser
  • 19. Настройка FBA Создать приложение с CBA, включить только windows аутентификацию Создать базу ASP.NET Membership с помощью aspnet_regsql Добавить разделы в web.config приложения, central administration, STS (руками на каждой машине) Включить FBA в приложении 1. 2. 3. 4.  Подробные описания   https://dplotnikov.wordpress.com/2011/08/31/%D0%BD%D0%B 0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D 0%B0-fba-%D0%B2-sharepoint-2010/ http://blogs.technet.com/b/speschka/archive/2009/11/05/config uring-forms-based-authentication-in-sharepoint-2010.aspx
  • 20. Настройка доверия  Чтобы добавить доверенного поставщика необходимо 1. 2. 3. 4. Сертификат подписи Security Token Realm (URN) Адрес IP-STS для входа Схема отображения claims
  • 21. Настройка доверия  Шаги: 1. 2. 3. 4. 5. 6. 7. Получить корневой сертификат от провайдера Добавить сертификат в trusted root authority Создать claim mapping, указав один из claim как identity Создать Trusted Identity Provider Создать или расширить веб-приложение с https и CBA Добавить доверенный провайдер в качестве источника claims Дать права пользователю внешней системы
  • 22. Настройка доверия        $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"
  • 24. Доступные провайдеры  Azure Access Control   Выступает в качестве промежуточного звена Поддерживает множество провайдеров:           LiveId Google Facebook Yahoo OpenId Анонимная аутентификация по email Другие WS-Federation сервисы Поддерживает отображение claim Недостаток один – стоит денег Идеально подходит для сценария интернет-сайтов
  • 25. Доступные провайдеры  ADFS – Active Directory Federation Services      SharePoint также умеет синхронизировать ADFS с профилями пользователей Недостатки:    Актуальная версия 2.0 Позволяет пользователям из одного домена аутентифицироваться на сервисах в другом домене под своими доменными учетными записями Не передает пароли вне доменной сети Сложно настраивать Нужен AD Идеально подходит для сценариев партнерских порталов в организации
  • 26. Доступные провайдеры  Live ID   Применимо только в одном случае:   Имеет WS-Federation точку доступа Активное использование сервисов Microsoft на портале Во всех остальных случаях лучше Azure Access Control
  • 28. ADFS и служба профилей    Настраивается как обычная синхронизация http://bpmsharepoint.iquestint.com/2012/03/14/share point-2010-synchronization-between-ad-and-userprofiles/ http://blogs.msdn.com/b/brporter/archive/2010/07/19/ trusted-identity-providers-amp-user-profilesynchronization.aspx
  • 29. С2WTS & SSS  С2WTS Преобразует Security Token в Windows Token для доступа к внешним системам   Например SQL Server SSS – отображает входные учетные записи на выходные  Нужно для доступа к внешним системам
  • 31. Авторизация   IClaimsIdentity currentIdentity = System.Threading.Thread.CurrentPrincipal.Identity as IClaimsIdentity; foreach (Claim claim in currentIdentity.Claims) { } Только в UI коде
  • 32. Получение SPUser     SPClaim c = new SPClaim(“claimType", “claimValue", ClaimValueTypes.String, SPOriginalIssuers.Format( SPOriginalIssuerType.TrustedProvi der, “Claim Provider Name") ); string encodedClaim = c.ToEncodedString(); // Use encodedClaim as loginName Web.EnsureUser(encodedClaim);
  • 33. Claims providers        Есть возможность создавать классы, которые будут дополнять входящие claims Также claim provider расширяют people picker Очень удобно использовать совместно с FBA Полученные claims транслируются в исходящие claims Класс наследник SPClaimsProvider http://msdn.microsoft.com/enus/library/ee537299.aspx http://msdn.microsoft.com/enus/library/gg615945.aspx
  • 34. Вызов 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