c# - MVC4/IIS/Forms 身份验证 SSO 问题

标签 c# asp.net-mvc iis forms-authentication session-cookies

我在使用 MVC4/IIS/Forms 身份验证时遇到了一个奇怪的间歇性问题。

我有两个站点,它们使用 SSO 将控制权传递给彼此。大多数情况下,切换会正确进行,并且用户会按预期重定向到下一个站点。但是,在某些情况下,即使发送了有效的 SSO 信息,也会要求用户重新登录。 SSO 方法用 [AllowAnonymous] 属性修饰,web.config 也有一个位置条目授予对 /account 的访问权限/sso 给所有用户。

它似乎是在第一次访问目标站点时发生的 - 一旦应用程序池预热,问题就会消失。

其他几点:

1 这两个站点都是 .net 4,因此不应该有任何遗留加密问题。
2. 这个问题很少发生(<10% 的时间)所以代码本身应该是正确的
3. 在本地 win7x64 上托管 IIS 7.5,而 azure - 在两个地方都发生
4. 似乎与浏览器无关

<location path="account/sso">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

[Authorize]
public class AccountController : BaseControllerTestable
{
    public AccountController()
        : base()
    {
    }

    [AllowAnonymous]
    public ActionResult SSO(string AuthToken, string Target)
    {
        //SSO logic here

    }
}

有什么想法吗?

最佳答案

您的 Controller 类上有一个 Authorize 属性,这意味着您的 SSO 方法将应用 AllowAnonymous 和 Authorize。在这种情况下,Authorize 属性看起来需要删除。

关于c# - MVC4/IIS/Forms 身份验证 SSO 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15946787/

相关文章:

c# - 从 IEnumerable 获取数据

c# - "struct"从哪里来?

c# - Web Api - Controller 外部请求参数

c# - 将模型数据从 View 传递到 Controller 并使用其值

iis - prerender.io IIS 配置

c# - 即将失败的暗示

c# - 如何在 C# 字符串属性中插入 HTML 标签?

c# - 用C#写的com server对象能不能在客户端释放的时候立即发现?

c# - Razor MVC C#。替换 "."上的 ","

c# - web.config中的Processmodel配置