sharepoint claims based auth

Post on 15-Jun-2015

465 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

С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

Вопросы?

top related