【问题标题】:WsFederation without cookies in Asp.Net MVC 4.6 appAsp.Net MVC 4.6 应用程序中没有 cookie 的 WsFederation
【发布时间】:2016-12-01 16:20:01
【问题描述】:

我正在尝试按照 Azure 示例通过此处提供的 WSFederation 将 Azure AD 集成到我的 MVC 4.6 Web 应用程序 https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation

此示例使用 cookie 来存储身份验证令牌。在阅读了几篇文章之后,我对选择 cookie 来存储 WS-Federation 生成的身份验证令牌感到有些困惑。有推荐的替代品吗?

此外,此 Web 应用程序还将托管 webapi 控制器作为同一项目的一部分。

感谢您的帮助!

【问题讨论】:

    标签: azure azure-active-directory ws-federation


    【解决方案1】:

    关于使用 cookie 存储令牌的一些误解。

    当应用重定向到 Azure AD 并且用户输入正确的用户名和密码时,应用将验证来自 Azure AD 的令牌并登录 Web 应用。

    然后cookies认证中间件会根据登录用户的声明附加cookies,供用户在没有再次登录的情况下访问页面。

    基于preview threads,您似乎想使用令牌来保护 MVC 应用程序和 Web API。正如我提到的,MVC 网页是面向用户的,建议使用 cookie 身份验证。

    【讨论】:

    • 感谢您的见解。因此,如果我的 MVC Web 应用程序反过来调用 WebApi,我当前选择的 WS-Fed 和 cookie 中间件是否仍然有效并被推荐?
    • 是的,如果 MVC Web 应用程序和 Web API 在同一个项目中,并且 Web API 只暴露给 MVC Web 应用程序。建议使用 cookie 身份验证。如果您还想将 Web API 暴露给其他应用程序,您可以考虑使用令牌。并且您可以参考here 使用令牌中间件来保护 Web API。
    • 在提供的示例中,以下代码用于检索令牌
    • 在提供的示例中,以下代码用于检索令牌 `AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID)); ClientCredential credential = new ClientCredential(clientId, appKey);结果 = 等待 authContext.AcquireTokenSilentAsync(todoListResourceId, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId)); `。但是,我在我的 MVC 项目中使用 WS-Fed 和 Owin。如何检索身份验证令牌并将其传递给服务调用?谢谢!
    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    相关资源
    最近更新 更多