Windows Azure AppFabric访问控制服务(ACS)中的OAuth 2.0身份提供程序

时间:2011-09-06 10:07:09

标签: azure appfabric oauth-2.0 accesscontrolservice

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身份提供商?

在添加Identity Provider并选择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

另一次更新

ACS Management API提供了添加新身份提供程序的机制(如果您将OpenId设置为WebSSOProtocolType),但是,我无法看到您如何传递OAuth测试服务器的密钥/密钥({{3}我正在使用要求。

http://term.ie/oauth/example/

2 个答案:

答案 0 :(得分:4)

在与Dominick Baier(www.leastprivilege.com)的电子邮件对话中,他说:

  

ACS实际上支持OpenId IdPs - 而非OAuth。 OAuth用于令牌   请求(通常是授权令牌)。

     

要添加新的OpenIds IdP,您需要使用管理API - Vittorio   有一个博客文章,在某处有一个样本。但并非所有OpenId提供商   得到支持。

如果我正确理解了Dominick的电子邮件,则无法以此身份使用OAuth,您必须使用OpenId。不幸的是,撰写你提到的第一篇博客文章的人真的对OpenID / OpenAuth一无所知 - 他是一个WS-Fed人。我之所以这么说是因为我写了...... :)

答案 1 :(得分:2)

OAuth 2委派方案,草案13中的第4.1节,根本不要求任何类型的身份提供者或任何身份提供者。您只需在网站中进行某种形式的身份验证,然后使用身份验证代码重定向到客户端的URL。

我建议在以下位置查看Auth 2代表团样本:

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

您会注意到,在此示例中,用户的身份验证是使用占位符代码(硬编码的用户名/密码)实现的。在真实场景中,您可以使用任何身份验证模式,包括与ACS的联合,这是有意义的,因为您已经在使用ACS来实现您的委派。