Поставщики удостоверений OAuth 2.0 в Windows Azure AppFabric Access Control Service (ACS) - PullRequest
5 голосов
/ 06 сентября 2011

Делегирование OAuth 2.0 входит в состав службы контроля доступа Azure AppFabric:

http://blogs.objectsharp.com/cs/blogs/steve/archive/2011/04/11/windows-azure-access-control-services-v2-rtw.aspx

Но как на самом деле настроить провайдера идентификации OAuth 2.0?

В интерфейсе управления при добавлении поставщика удостоверений и выборе поставщика удостоверений WS-Federation необходимо предоставить документ метаданных WS-Federation.

Однако, когда вы читаете документацию провайдеров OAuth 2.0 (т.е. http://msdn.microsoft.com/en-us/library/hh243647.aspx), в нем не упоминается документ метаданных (да, я знаю, что Windows Live включен в качестве предварительно сконфигурированного провайдера идентификации). надо писать?


Обновление

Хорошо, я обнаружил, что вы можете добавить дополнительных провайдеров идентификации с помощью API, посмотрите в качестве примера следующие команды PowerShell:

http://blogs.msdn.com/b/vbertocci/archive/2011/05/19/adding-a-custom-openid-provider-to-acs-with-just-one-line-of-powershell-code.aspx

Однако при попытке добавить OAuth-провайдер я просто получаю сообщение об ошибке:

Add-IdentityProvider -Type "Manual" -Name "foo" -SignInAddress "http://term.ie/oauth/example/access_token.php" -Protocol OAuth -Namespace "abc" -ManagementKey "xxxxxx"

Add-IdentityProvider : An error occurred while processing this request.
At line:1 char:21
+ Add-IdentityProvider <<<<  -Type "Manual" -Name "foo" -SignInAddress "http://term.ie/oauth/example/access_token.php" -Protocol OAuth -Namespace "abc" -ManagementKey "xxxxxx"
+ CategoryInfo          : CloseError: (:) [Add-IdentityProvider], ServiceManagementException
+ FullyQualifiedErrorId : Microsoft.Samples.DPE.ACS.ServiceManagementTools.PowerShell.IdentityProviders.AddIdentityProviderCommand

Другое обновление

API управления ACS предоставляет механизм для добавления новых провайдеров идентификации (если вы установите OpenId в качестве WebSSOProtocolType), однако я не вижу, как вы передаете ключ / секрет, что тестовый сервер OAuth (http://term.ie/oauth/example/) я пользуюсь требует.

http://msdn.microsoft.com/en-us/library/hh278947.aspx

Ответы [ 2 ]

4 голосов
/ 09 сентября 2011

В разговоре по электронной почте с Домиником Байером (www.leastprivilege.com) он сказал:

ACS фактически поддерживает IdP OpenId, а не OAuth. OAuth используется для токена запросы (обычно токены делегирования).

Чтобы добавить новый OpenIds IdP, вам нужно использовать API управления - Vittorio есть блог с образцом где-то. Но не все провайдеры OpenId поддерживаются.

Если я правильно понял электронную почту Доминика, вы не можете использовать OAuth в этом качестве, вы должны использовать OpenId. К сожалению, парень, который написал первую статью в блоге, которую вы упомянули, на самом деле ничего не знает об OpenID / OpenAuth - он парень из WS-Fed. Я говорю это потому, что написал это ...:)

2 голосов
/ 12 сентября 2011

Сценарий делегирования OAuth 2, раздел 4.1 в черновике 13, вообще не предписывает тип поставщика удостоверений или какого-либо поставщика удостоверений. Вам просто нужно выполнить некоторую форму аутентификации на вашем веб-сайте и перенаправить на URL вашего клиента с кодом аутентификации.

Я рекомендую взглянуть на образец делегирования Auth 2 по адресу:

https://connect.microsoft.com/site1168/Downloads

Вы заметите, что в этом примере аутентификация пользователя реализована с помощью кода заполнителя (имя пользователя и пароль в жестком коде). В реальном сценарии вы можете использовать любой шаблон аутентификации, включая Федерацию с ACS, что имеет смысл, поскольку вы уже используете ACS для реализации своего делегирования.

...