5

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

另一个更新

ACS 管理 API 提供了一种添加新身份提供者的机制(如果您将 OpenId 设置为 WebSSOProtocolType),但是,我看不到您如何传递 OAuth 测试服务器的密钥/秘密(http://term.ie /oauth/example/)我正在使用要求。

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

4

2 回答 2

4

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

ACS 实际上支持 OpenId IdP——而不是 OAuth。OAuth 用于令牌请求(通常是委托令牌)。

要添加新的 OpenIds IdP,您需要使用管理 API——Vittorio 有一篇博客文章,其中有一个示例。但并非所有 OpenId 提供程序都受支持。

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

于 2011-09-09T18:24:48.257 回答
2

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

我建议在以下位置查看 Auth 2 委托示例:

https://connect.microsoft.com/site116​​8/Downloads

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

于 2011-09-12T17:40:01.190 回答