Поставщики удостоверений OAuth 2.0 в Windows Azure AppFabric Access Control Service (ACS)
Делегирование OAuth 2.0 входит в состав службы контроля доступа Azure AppFabric:
Но как вы на самом деле настраиваете провайдера идентификации OAuth 2.0?
В интерфейсе управления при добавлении поставщика удостоверений и выборе поставщика удостоверений WS-Federation необходимо предоставить документ метаданных WS-Federation.
Однако, когда вы читаете документацию поставщиков OAuth 2.0 (то есть http://msdn.microsoft.com/en-us/library/hh243647.aspx), в нем не упоминается документ метаданных (да, я знаю, что Windows Live включен в качестве предварительно настроенного поставщика удостоверений). Это то, что я должен написать?
Обновить
Итак, я обнаружил, что вы можете добавить дополнительных провайдеров идентификации с помощью API, посмотрите эти команды PowerShell в качестве примера:
Однако при попытке добавить поставщика 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/) Я использую требует.
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 для реализации своего делегирования.