我目前正在尝试了解Azure ACS与基于声明的Auth的组合以及使用自定义STS的选项,我只是慢慢地通过(很遗憾的是很少)信息源。 在我花费更多时间之前,我想确认我的计划是否可行。 我有多个azure角色(web + worker),这些角色由员工和客户通过互联网访问。此外,员工可以从我们的本地网络中访问这些角色和桌面应用程序。
用户数据来自两个来源。我们的azure应用程序拥有关于客户和员工的用户数据,我们的(本地)AD仅来自员工。
为了使登录体验尽可能高效(且符合人体工程学),当通过我们的本地网络访问时,员工应该在桌面应用程序上自动进行身份验证(Windows Integrated Auth?)(由于Windows用户配置文件上下文而自动进行)在天蓝色的应用程序(希望没有登录页面)。 另一方面,客户在访问azure应用程序时应输入其用户凭据,但不必在不同的“凭据来源”之间做出决定,他们应该只获取用户名+密码表单。 换句话说
在写这个问题时,又想到了另外两个问题:
1)甚至可以根据源/ cookie /魔法进行自动登录,还是需要手动用户选择“凭证来源”?
2)如果Azure ACS“知道”具有用户名X的AD帐户与Azure应用程序用户Y相同,那么哪一个登录是否重要?应用程序可以在任一登录路由上访问相同的声明数据吗?
答案 0 :(得分:1)
您确定需要自定义STS吗?听起来好像只是想让你的AD用户使用他们的Windows凭据登录你的azure应用程序(如果他们在域上)(没有密码提示)。 ADFS 2.0和WIF将为此提供便利。此外,如果您设置了ADFS代理服务器,以便当这些用户从域外浏览到您的应用时,系统会提示他们提供域凭据。
现在您的AD用户已设置,但如果您希望域外的用户可以访问您的应用程序,则可以将ADFS与其他组织的ADFS服务器联合,或使用ACS启用使用Google等消费者身份提供商的登录,Yahoo和LiveID,作为内置选项提供。如果你确实引入了这样的ACS,你可以将你的公司ADFS服务器配置为你的ACS实例上的身份提供者以及google,yahoo和什么不是,这样当你的用户浏览你的网站时,他们会被提示选择他们的身份提供者希望登录。
这是一篇精彩的白皮书,演示如何使用ADFS对云应用程序进行身份验证:
http://www.microsoft.com/download/en/details.aspx?id=13789
有关部署ADFS的详细信息(例如部署ADFS代理)可以找到in technet。
对于ACS,有关于如何将其集成到azure应用程序中的指南和示例,以及如何添加ADFS身份提供程序:http://msdn.com/acs
答案 1 :(得分:0)
您可以做的一件事是在请求页面时查看用户凭据以获取身份验证信息。
如果你看......
HttpContext.Current.User.Identity
您可以获取有关用户身份的信息。如果他们在域中,您将看到他们有域名,您可以通过编程方式选择将他们引导到登录页面。
我还要说,我从来没有尝试这样做,所以我不知道是否有一种内置方法可以通过简单地在web.config中配置来实现这一点。