openid-connect - 当用户不想在 IdentityServer3 的登录页面上进行身份验证时如何重定向?
问题描述
我使用IdentityServer3作为 OpenId 提供者。在登录页面上,如果用户不想继续,我们希望允许用户在不进行身份验证的情况下返回应用程序。例如,使用不同意条款和条件,因此我们无法让用户登录或注册。他们仍然是将他们带到 IdentityServer 的应用程序的匿名用户。因此,在身份提供者 UI 上有一个“我不同意,带我回到我的应用程序”之类的链接或按钮是有意义的。
.NET 有一个 OpenIdConnect 中间件,它提供了一个名为OpenIdConnectOptions.Events.OnAuthenticationFailed的事件处理程序,应该在身份验证失败时调用它。
第一个问题:如何从 IdentityServer3 返回结果以在 .NET 客户端中触发此 OnAuthenticationFailed 事件处理程序?我还没有真正找到返回身份验证失败的方法。我不知道没有令牌的简单重定向是否足够好。
第二个问题:还有其他客户端(java、javascript、php)。由于这里客户端没有 .NET 中间件,客户端如何正确处理此类响应?
解决方案
OAuth 2.0 规范提供了可能的响应类型,您可以在用户无法访问的情况下使用它们 - https://www.rfc-editor.org/rfc/rfc6749#section-4.2.1(参见第 4.2.2.1 节。错误回复)。所以 OP 应该使用 URL 参数 error 和 error_description 重定向回回调。例如:
https://rp.com/callback?error=access_denied&error_description=用户拒绝同意。
推荐阅读
- javascript - 如何在 VueJs2 上使用 Amcharts 3
- java - 如何获取动态创建的复选框android的值?
- datetime - 将 p:calendar 日期和时间设置为 DefaultScheduleEvent 的 startDate 和 endDate
- ios - 以编程方式在自定义视图中快速 tableView - 失去对控制器委托和数据源的引用
- csv - 如何在 solr 中使用 dih 索引 csv 文件
- c++ - Consexpr typeid 到订单类型
- slack - 气流 on_failure_callback & SlackAPIPostOperator
- python - 如何在 Windows10 中从 bash 提示符运行 python '__main__' 程序文件?
- python - Python 模块和多个 python-dev 安装
- javascript - 使用 Material Components Web 在应用栏上进行可扩展搜索