Kas*_*ols 5 c# model-view-controller oauth-2.0 openid-connect identityserver3
我正在使用 Identity Server 3 + OpenID Connect + OAuth 2.0 在我的一个项目中实现单点登录。我已经根据提供的样本设置了所有内容,并且一切正常。我正在使用隐式流在多个 MVC 网站中对用户进行身份验证。
现在我有一个用例,当我需要将自定义参数从客户端应用程序传递到身份服务器时。最简单的示例之一是需要在 Identity Server 视图之一中显示的自定义消息。我想在不同的页面中呈现此消息 - 登录、注销、注销等。
我发现 Microsoft 的 OpenIdConnectAuthentication 中间件允许在 RedirectToIdentityProvider 通知中的 ProtocolMessage 中设置自定义参数。
例如,
RedirectToIdentityProvider = async ctx =>
{
ctx.ProtocolMessage.Parameters.Add("info_message", "Account activation succeeded. Please log in using new account.");
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法在 Identity Server 中找到可以读取这些参数的位置。这甚至可能吗?
如果这不受支持或完全错误,您能否建议处理此用例的最佳方法是什么?
传入自定义参数时,您应该使用 OpenID Connect 可选参数acr_values
。这已被 Identity Server用于传递租户名称和身份提供者限制。
acr_values
只要您有权访问IdentityServer3.Core.Models.SignInMessage
(例如在您的用户服务中),您就可以在 Identity Server 中阅读。
acr_values
不是注销的一部分。如果你真的想在这里获取自定义参数,可以通过扩展DefaultViewService
和覆盖LoggedOut
方法来完成。
在此方法中,您可以在SignOutMessage
的ReturnUrl
属性中看到任何额外的 URL 参数。
获得值后,您可以使用以下内容将其添加到 ViewModel:
model.Custom = new { customMessage = "your value" };
Run Code Online (Sandbox Code Playgroud)
然后,您需要为注销页面创建自己的模板,并让它显示您的自定义值。
这不好看也不漂亮。我不会推荐它,但它肯定是可能的......
归档时间: |
|
查看次数: |
4134 次 |
最近记录: |