sharepoint claims based auth
DESCRIPTION
Старая презентация про Claims Based Authentication, в свете SharePoint 2013 очень актуально. В ней раскрываются некоторые особенности работы c claims для администраторов и программистов.TRANSCRIPT
![Page 1: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/1.jpg)
SharePointClaims-Based Authentication
Станислав Выщепан
![Page 2: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/2.jpg)
Краткое содержание Что такое claims (утверждения) Архитектура Claims-based Authentication Настройка CBA в SharePoint Источники утверждений (claims) Программные методы работы с claims
![Page 3: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/3.jpg)
Что такое утверждения (claims)
![Page 4: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/4.jpg)
Аутентификация vs Авторизация Аутентификация – проверка identity
пользователя Например паспорт гражданина РФ является
его identity
Авторизация – проверка прав пользователя Охранник в офисе, проверяет по паспорту в
какой организации вы работаете и дает вам ключ-карту для доступа только на тот этаж, где располагается организация
![Page 5: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/5.jpg)
Что такое claims? Паспорт гражданина РФ является его
identity Паспорт содержит множество атрибутов
человека Номер ФИО Дата рождения Место рождения итд…
Такой набор атрибутов, составляющий identity пользователя, называется claims
![Page 6: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/6.jpg)
Claims и Security Token Паспорт гражданина содержит
информацию об «издателе» Кем и когда выдан
Паспорт защищен от подделки С точки зрения Claims Based Authentication
паспорт гражданина является Security Token
![Page 7: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/7.jpg)
Claims и Security Token Security Token, как и паспорт гражданина,
состоит из набора Claims, и защищен от подделки
Каждый claim имеет некоторое имя (тип), значение и «издателя» (источник этого claim)
![Page 8: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/8.jpg)
Доверие и аутентификация Водительское удостоверение (ВУ) также
является identity человека, как и паспорт гражданина
В некоторых организациях принимают паспорт, но не принимают ВУ (не проходит аутентификация)
Издателю ВУ (ГАИ) не доверяют, а издателю паспорта (ФМС) доверяют
Аналогично в CBA приложение должно определить каким издателям оно доверяет
![Page 9: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/9.jpg)
Зачем это все1. Не хранить identity в приложении –
упрощение архитектуры, повышение безопасности
2. Федерация аутентификации – два непонятных слова вместе возможность использовать уже существующие источники
3. Стандартизация протоколов – повышение доступности и интероперабельности
![Page 10: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/10.jpg)
Архитектура CBA
![Page 11: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/11.jpg)
Типовая картинка
![Page 12: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/12.jpg)
Терминология 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](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/13.jpg)
Стандарты WS-Federation и WS-Trust
По префиксам WS- можно догадаться что описывают протоколы веб-сервисов (STS)
SAML – Security Application Markup Language – язык разметки для Security Token На базе XML, что не удивительно
OAuth – идея та же, более легковесная реализация, например для REST веб-сервисов Актуальная версия 2.0
![Page 14: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/14.jpg)
Библиотеки и компоненты 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](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/15.jpg)
Настройка CBA в SharePoint
![Page 16: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/16.jpg)
Classic Mode vs Claims Mode По-умолчанию веб-приложения создаются
в classic mode Аутентификация в домене Windows
Можно переключить на CBA При создании приложения При расширении в дополнительную зону В существующей конфигурации (нехорошая
операция) Между сервисами и между фермами
только CBA
В claims mode немного усложняется использование веб-сервисов
![Page 17: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/17.jpg)
Архитектура CBA в SharePoint SharePoint имеет свой RP-STS, называется
SecurityTokenService SecurityTokenService поддерживает работу
с Локальным AD Провайдерами FBA (ASP.NET Membership) Доверенными IP
Можно указать несколько одновременно
Внутри SharePoint это всегда SPUser
![Page 18: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/18.jpg)
![Page 19: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/19.jpg)
Настройка 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](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/20.jpg)
Настройка доверия Чтобы добавить доверенного поставщика
необходимо1. Сертификат подписи Security Token2. Realm (URN)3. Адрес IP-STS для входа4. Схема отображения claims
![Page 21: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/21.jpg)
Настройка доверия Шаги:
1. Получить корневой сертификат от провайдера
2. Добавить сертификат в trusted root authority3. Создать claim mapping, указав один из claim
как identity4. Создать Trusted Identity Provider5. Создать или расширить веб-приложение с
https и CBA6. Добавить доверенный провайдер в качестве
источника claims7. Дать права пользователю внешней системы
![Page 22: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/22.jpg)
Настройка доверия $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](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/23.jpg)
Источники утверждений (claims)
![Page 24: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/24.jpg)
Доступные провайдеры Azure Access Control
Выступает в качестве промежуточного звена Поддерживает множество провайдеров:
LiveId Google Facebook Yahoo OpenId Анонимная аутентификация по email Другие WS-Federation сервисы
Поддерживает отображение claim Недостаток один – стоит денег Идеально подходит для сценария интернет-
сайтов
![Page 25: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/25.jpg)
Доступные провайдеры ADFS – Active Directory Federation Services
Актуальная версия 2.0 Позволяет пользователям из одного домена
аутентифицироваться на сервисах в другом домене под своими доменными учетными записями
Не передает пароли вне доменной сети SharePoint также умеет синхронизировать
ADFS с профилями пользователей Недостатки:
Сложно настраивать Нужен AD
Идеально подходит для сценариев партнерских порталов в организации
![Page 26: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/26.jpg)
Доступные провайдеры Live ID
Имеет WS-Federation точку доступа Применимо только в одном случае:
Активное использование сервисов Microsoft на портале
Во всех остальных случаях лучше Azure Access Control
![Page 27: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/27.jpg)
Руководства по настройке ADFS
http://blogs.technet.com/b/speschka/archive/2010/07/30/configuring-sharepoint-2010-and-adfs-v2-end-to-end.aspx
LiveID http://www.wictorwilen.se/Post/Visual-guide-to-Azu
re-Access-Controls-Services-authentication-with-SharePoint-2010-Index-Post.aspx
Azure Access Control http://www.wictorwilen.se/Post/Visual-guide-to-Windows-
Live-ID-authentication-with-SharePoint-2010-part-1.aspx
![Page 28: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/28.jpg)
ADFS и служба профилей Настраивается как обычная синхронизация http://bpmsharepoint.iquestint.com/2012/03/1
4/sharepoint-2010-synchronization-between-ad-and-user-profiles/
http://blogs.msdn.com/b/brporter/archive/2010/07/19/trusted-identity-providers-amp-user-profile-synchronization.aspx
![Page 29: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/29.jpg)
С2WTS & SSS С2WTS Преобразует Security Token в
Windows Token для доступа к внешним системам Например SQL Server
SSS – отображает входные учетные записи на выходные Нужно для доступа к внешним системам
![Page 30: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/30.jpg)
Программные методы работы с claims
![Page 31: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/31.jpg)
Авторизация IClaimsIdentity currentIdentity =
System.Threading.Thread.CurrentPrincipal.Identity as IClaimsIdentity;
foreach (Claim claim in currentIdentity.Claims) { }
Только в UI коде
![Page 32: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/32.jpg)
Получение 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](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/34.jpg)
Вызов 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 35: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/35.jpg)
Полезные ссылки http://
msdn.microsoft.com/en-us/library/gg430136.aspx
http://blogs.msdn.com/b/ericwhite/archive/2010/06/18/consuming-a-claims-enabled-wcf-web-service-as-an-sharepoint-2010-external-content-type.aspx
http://www.liquidmercurysolutions.com/whatwedo/knowhow/blog/Lists/Posts/Post.aspx?ID=2
![Page 36: SharePoint Claims Based Auth](https://reader036.vdocuments.mx/reader036/viewer/2022062300/557ebaa1d8b42ad27b8b4c66/html5/thumbnails/36.jpg)
Вопросы?