【发布时间】:2018-12-23 11:26:50
【问题描述】:
我正在构建一个依赖于AAD auth 的 ASP.NET MVC Web 应用程序。我使用标准流程将身份验证添加到项目(通过 VS 进行 AAD 身份验证),并且在过去两周内运行良好。
今天突然坏了:
这发生在ADALTokenCache 初始化(标准 AAD 身份验证例程):
public ADALTokenCache(string signedInUserId)
{
// associate the cache to the current user of the web app
userId = signedInUserId;
this.AfterAccess = AfterAccessNotification;
this.BeforeAccess = BeforeAccessNotification;
this.BeforeWrite = BeforeWriteNotification;
// look up the entry in the database
Cache = db.UserTokenCacheList.FirstOrDefault(c => c.webUserUniqueId == userId);
// place the entry in memory
this.Deserialize((Cache == null) ? null : MachineKey.Unprotect(Cache.cacheBits,"ADALCache"));
}
看起来很奇怪,根本原因对我来说是未知的——除了添加更多视图和控制器之外,没有对应用程序本身进行任何更改(没有什么应该与 auth 混淆)。
清除浏览器 cookie 无济于事。手动设置 MachineKey 也无济于事。
部署应用后,本地和远程服务器上都将重现。
有人遇到过这种情况吗?
在没有对配置进行任何修改的情况下出现似乎很奇怪。
【问题讨论】:
-
听起来可能是域名更改或问题......你能显示实际代码以及你在那里拥有的堆栈跟踪吗......
-
看起来您正在使用本地机器密钥来解密从远程 AD 返回的一些数据。是这样吗?如果是,那么如果您身边的机器密钥发生了变化,您将无法解密使用不同密钥加密的任何内容。
-
我想知道在这种情况下是否有一个很好的方法来重置缓存。数据应通过 MachineKey 加密处理。
-
也许只是不要通过为应用设置自定义固定键来改变键。
标签: c# asp.net-mvc azure authentication azure-active-directory