【问题标题】:How to share MSALSessionCache with 2 web applications?如何与 2 个 Web 应用程序共享 MSALSessionCache?
【发布时间】:2019-02-15 23:54:44
【问题描述】:

我开发了 2 个网络应用程序。 我已将 Azure Active Directory v2.0 用于用户身份。 这两个应用程序在 Azure 中作为单独的 Web 应用程序托管。 使用应用程序网关,我将特定请求重定向到 Web 应用程序。

如果用户请求任何 Web 应用程序,则首先将其重定向到 Azure 租户端点进行身份验证。

成功登录后,它将被重定向到主网络应用程序,我在 OnAuthorizationCodeReceived 方法中遵循以下代码。

TokenCache userTokenCache = new MSALSessionCache(signedInUserID, notification.OwinContext.Environment["System.Web.HttpContextBase"] as HttpContextBase).GetMsalCacheInstance(); ConfidentialClientApplication cca = new ConfidentialClientApplication(ApplicationId, Authority, RedirectUri, new ClientCredential(ApplicationKey), userTokenCache, null);

现在当用户从一个 Web 应用程序导航到另一个 Web 应用程序时。我正在使用下面的代码从缓存中获取令牌。

TokenCache userTokenCache = new MSALSessionCache(signedInUserID, new HttpContextWrapper(HttpContext.Current)).GetMsalCacheInstance(); ConfidentialClientApplication cca = new ConfidentialClientApplication(Startup.ApplicationId, Startup.Authority, Startup.RedirectUri, new ClientCredential(Startup.ApplicationKey), userTokenCache, null);

var user = cca.Users.FirstOrDefault();

当我实现此代码并尝试在第二个 Web 应用程序中获取令牌时,它将在用户变量中给我 null 并引发错误。

我该怎么办?

注意:如果某些用户登录了一个 Web 应用程序,则不需要登录另一个 Web 应用程序。会话和 cookie 在所有网络应用程序之间共享。

【问题讨论】:

    标签: asp.net-mvc-4 azure-active-directory msal


    【解决方案1】:

    在 ADAL.NET 3.x、ADAL.NET 4.x 和 MSAL.NET 之间共享 SSO 状态的令牌缓存序列化自定义在以下示例中进行了说明:active-directory-dotnet-v1-to-v2

    此解决方案展示了如何在 .NET 桌面应用程序中自定义令牌缓存序列化,以便在 ADAL.NET V3.x 应用程序、ADAL.NET V4.x 应用程序和 MSAL 之间共享单点登录 (SSO) 状态。 NET 2.x 应用程序

    【讨论】:

      猜你喜欢
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2020-06-06
      • 2012-02-25
      • 2012-04-05
      • 2012-09-19
      相关资源
      最近更新 更多