.NET 5 无法取消消息保护。尝试登录回调时的状态

问题描述 投票:0回答:1

我们正在运行一个Azure应用程序服务(linux),用于身份验证和授权。它使用 Microsoft Identity 来使用 Azure AD 身份验证,因此我们使用 Azure ad oidc。几个月前,我们没有遇到任何问题,但是当我们添加前门并将应用程序服务扩展到 3 个实例时,这种情况开始发生“无法取消保护消息。状态”。

我们一登陆页面就会出现此错误,因为当您打开它时,它会将您重定向到天蓝色广告进行登录。奇怪的是,当您刷新页面一两次时,它会通过并为您签名没有错误。

我们最新的设置如下所示: 启动.cs (https://i.stack.imgur.com/doVNb.png)

使用 Redis 作为密钥存储。

使用数据保护后有人遇到过这样的问题吗?

我们遵循这里的答案https://github.com/AzureAD/microsoft-identity-web/wiki/Deploying-Web-apps-to-App-services-as-Linux-containers#issue-with-scaled-外网应用程序内应用程序服务, 并尝试了数据保护:使用azure keyvault和不使用azure blob存储,尝试将密钥存储在我们的数据库中,最后尝试了redis,但这些解决方案都不起作用。会话关联性也已开启。

azure openid-connect identityserver4 .net-5 identity
1个回答
0
投票

当您有多个客户端实例时,必须确保将数据保护 API 配置为在所有实例中使用相同的共享加密密钥。否则状态参数无法解密。

我最近在博客中介绍了状态参数及其加密方式:

揭秘 ASP.NET Core 中 OpenID Connect 的状态和 Nonce 参数

请参阅这篇关于配置数据保护 API 的文章:

配置 ASP.NET Core 数据保护

© www.soinside.com 2019 - 2024. All rights reserved.