我正在尝试创建一个使用 ACS 提供的身份验证和授权的 OData 服务。
我能够配置 ACS,但现在我需要为服务用户提供生成他们的 SWT 令牌以将其添加到“授权”标头中的能力。我想创建一个网页,该网页将提供可用 IdP 的列表,并在成功验证后显示 SWT 令牌。
怎么做?
SCB 的链接是一个很好的开始。听起来除了您的 OData 服务之外,您还希望托管一个能够获取和缓存 ACS 颁发的 SWT 令牌的网站,以便可以使用它代表用户对您的 OData 服务进行经过身份验证的调用。
您可以使用ACS 示例中的基于 WIF 的站点来执行此操作,但您需要提供自己的自定义安全令牌处理程序,以便它理解 SWT 令牌,而 WIF 本身并不支持这些令牌。
查看2011 年 4 月的身份培训套件,它提供了有关如何执行此操作的提示。例如,您可以在 Windows Phone 7 示例中找到基于 WIF 库构建的 SimpleWebToken 和 SimpleWebTokenHandler 类。查看该演练的第 38 步,其中展示了如何将 SimpleWebTokenHandler 添加到您网站的 web.config。
在所有这些工作之后,您还需要在 web.config 的 microsoft.identityModel/service 部分中配置 saveBootstrapTokens="true" 。这样,您的网站可以像这样获取 SWT 令牌:
SimpleWebToken swt = ((IClaimsIdentity)HttpContext.Current.User.Identity).BootstrapToken as SimpleWebToken
如果我正确理解您的问题,您将尝试显示一个列出可用提供商的页面。
微软有一个很好的例子来说明如何连接 ACS,其中包括显示自动生成的提供者列表。
http://www.windowsazure.com/en-us/develop/net/how-to-guides/access-control/
关于将 OData 连接到 ACS,数据访问团队在他们的博客上也有一个很好的演练系列。