【发布时间】: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