sharepoint claims based auth
DESCRIPTION
Старая презентация про Claims Based Authentication, в свете SharePoint 2013 очень актуально. В ней раскрываются некоторые особенности работы c claims для администраторов и программистов.TRANSCRIPT
SharePointClaims-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. Не хранить identity в приложении –
упрощение архитектуры, повышение безопасности
2. Федерация аутентификации – два непонятных слова вместе возможность использовать уже существующие источники
3. Стандартизация протоколов – повышение доступности и интероперабельности
Архитектура 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
По префиксам WS- можно догадаться что описывают протоколы веб-сервисов (STS)
SAML – Security Application Markup Language – язык разметки для Security Token На базе XML, что не удивительно
OAuth – идея та же, более легковесная реализация, например для REST веб-сервисов Актуальная версия 2.0
Библиотеки и компоненты 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
Настройка 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
Настройка 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
Настройка доверия Чтобы добавить доверенного поставщика
необходимо1. Сертификат подписи Security Token2. Realm (URN)3. Адрес IP-STS для входа4. Схема отображения claims
Настройка доверия Шаги:
1. Получить корневой сертификат от провайдера
2. Добавить сертификат в trusted root authority3. Создать claim mapping, указав один из claim
как identity4. Создать Trusted Identity Provider5. Создать или расширить веб-приложение с
https и CBA6. Добавить доверенный провайдер в качестве
источника claims7. Дать права пользователю внешней системы
Настройка доверия $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
Актуальная версия 2.0 Позволяет пользователям из одного домена
аутентифицироваться на сервисах в другом домене под своими доменными учетными записями
Не передает пароли вне доменной сети SharePoint также умеет синхронизировать
ADFS с профилями пользователей Недостатки:
Сложно настраивать Нужен AD
Идеально подходит для сценариев партнерских порталов в организации
Доступные провайдеры Live ID
Имеет WS-Federation точку доступа Применимо только в одном случае:
Активное использование сервисов Microsoft на портале
Во всех остальных случаях лучше Azure Access Control
Руководства по настройке 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
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
С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.TrustedProvider, “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/en-us/library/ee537299.aspx http
://msdn.microsoft.com/en-us/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/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
Вопросы?