Поставщики удостоверений OAuth 2.0 в Windows Azure AppFabric Access Control Service (ACS)

Делегирование 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 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам