2012-07-01 39 views
0

我有一个MVC 3应用程序,我试图与Azure托管的ACS身份提供程序集成。我一直在关注教程,但在使用ASP.NET MVC时,它们看起来并不适合我。无法在MVC应用程序中完成Azure ACS身份验证

从本质上讲,当我打查看我已经与[Authorize]用户被重定向到Azure中托管的登录页面的身份提供商列表标记。我选择一个提供商(在这种情况下,生活)并登录。在这一点上,这一切都符合我的预期。成功验证后,它出现(视觉),我是而不是重定向回我的应用程序,而是我返回到身份提供商页面。当在Fiddler中观看它时,它看起来实际上返回了,但是随后又重新开始了这个循环(HTTP状态码302)。

有人可以解释什么可能造成这种情况?

在Azure的门户,我已经配置了我的信赖方应用程序

  • 境界下列网址:HTTP://本地主机:7777/
  • 返回URL:HTTP://本地主机:7777 /(我也试过的http://本地主机:7777 /首页/
  • 在其他情况下,我都默认设置

的URL匹配的是在Web.config(包括最后的斜线

只有一个控制器具有以下:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [Authorize] 
    public ActionResult About() 
    { 
     Response.Write("Claims Received from ACS:"); 
     ClaimsIdentity ci = Thread.CurrentPrincipal.Identity as ClaimsIdentity; foreach (Claim c in ci.Claims) 
     { 
      Response.Write("Type: " + c.ClaimType + "- Value: " + c.Value + ""); 
     } 

     return View(); 
    } 
} 

注:这是一个全新的项目通过这种整合来创造。所有软件包和相关的SDK都是最新的。

+0

如果你仍然面临同样的问题,我想看看你的web.config是什么样的。 – Rytmis

回答

0

我想知道您的意思是当您登录并返回到您的Web应用程序时,它认为您未登录,并将您重新导向到身份提供商的登录页面。

请检查您是否正确配置了授权逻辑。例如,如果您使用基于角色的授权,则需要配置ACS以创建返回角色的规则。您也可以使用自定义授权,而不是授权属性。在您的自定义授权代码中,您可以检查所需的声明是否存在。声明可以是角色或其他任何内容(用户名,年龄等)。自定义授权通常比授权属性更敏捷。

最好的问候,

Ming Xu。

+0

我还没有做过任何自定义,我刚刚创建了一个空白的MVC应用程序,并使用Azure站点上的演练引用了Azure STS。我没有特殊的声明要求,也没有在规则组中配置任何附加内容,只是在文章中定义的默认值。我已经删除了'[Authorized]'属性并且只设置了''。此时,在点击* Windows Live™ID *之后,它只是循环回来,因为我已经正确认证了。每个循环在登录页面开始和结束。 – JoeGeeky

+0

当POST返回到'localhost:7777'时,我可以确认我看到'Set-Cookie:FedAuth = xyz'和'Set-Cooke:FedAuth1 = xyz'。响应是302,然后'Location:'标题被设置回Azure入口点。目前我只是想看看基本的身份验证工作。 – JoeGeeky

+0

我建议您检查http://msdn.microsoft.com/en-us/library/windowsazure/hh127794.aspx以获取示例以了解它是否有帮助。 –

-1

请确保您没有修改示例代码。由于它是一个官方的ACS SDK示例,很多人都尝试过它,它会起作用。

而且在原来的职位,你提到你已经配置ASP.NET授权:

<authorization> 
    <deny users="?" /> 
    </authorization> 

请删除此(如文件中所示),如果你不想使用ASP.NET授权(你想使用WIF)。

最好的问候,

Ming Xu。

+0

我已经在Azure网站上精确跟踪了三个独立示例的文档,并且它们都导致了相同的情况。在您提供的最新示例中,我再次运行了相同的结果。我可以确认''部分已被删除。至于我的授权配置,我最初将方法归于'[Authorize]',但正如我在之前的评论中所述,我已将其删除。无论如何,我有或没有相同的问题。 – JoeGeeky

+0

我应该恢复支付吗? – JoeGeeky

相关问题