gpt4 book ai didi

c# - 将自定义参数传递给 Identity Server 3

转载 作者:太空狗 更新时间:2023-10-30 01:16:05 24 4
gpt4 key购买 nike

我正在使用 Identity Server 3 + OpenID Connect + OAuth 2.0 在我的一个项目中实现单点登录。我已经根据提供的示例设置了所有内容,一切正常。我正在使用隐式流来验证多个 MVC 网站中的用户。

现在我有一个用例,需要将自定义参数从客户端应用程序传递到身份服务器。最简单的示例之一是需要在身份服务器 View 之一中显示的自定义消息。我想在不同的页面中呈现此消息 - 登录、注销、注销等。

我发现 Microsoft 的 OpenIdConnectAuthentication 中间件允许在 RedirectToIdentityProvider 通知中的 ProtocolMessage 中设置自定义参数。

例如,

 RedirectToIdentityProvider = async ctx =>
{
ctx.ProtocolMessage.Parameters.Add("info_message", "Account activation succeeded. Please log in using new account.");
}
}

不幸的是,我无法找到可以在 Identity Server 中读取这些参数的位置。这可能吗?

如果这不受支持或完全错误,您能否建议处理此用例的最佳方法是什么?

最佳答案

在传递自定义参数时,您应该使用 acr_values 的 OpenID Connect 可选参数。这是 already used by Identity Server用于通过租户名称和身份提供者限制。

只要您有权访问 IdentityServer3.Core.Models.SignInMessage,就可以在 Identity Server 中读取 acr_values (例如在您的用户服务中)。

更新(注销)

acr_values 不是注销的一部分。如果您真的想在此处获取自定义参数,可以通过扩展 DefaultViewService 并覆盖 LoggedOut 方法来完成。

在此方法中,您可以在 SignOutMessageReturnUrl 属性中看到任何额外的 URL 参数。

一旦你有了你的值(value),你就可以使用类似下面的东西将它添加到 ViewModel 中:

model.Custom = new { customMessage = "your value" };

然后您需要为注销页面创建自己的模板并让它显示您的自定义值。

这不好也不漂亮。我不推荐它,但它肯定是可能的......

关于c# - 将自定义参数传递给 Identity Server 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36715557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com