【问题标题】:Handle OAuth2 authentication failure using Apigee proxy使用 Apigee 代理处理 OAuth2 身份验证失败
【发布时间】:2014-03-14 09:05:25
【问题描述】:

按照oauth-login-app 示例,我编写了自己的登录应用程序来保护我的api。

我已经实现了网络服务器流程,一切正常。

我的问题是:我应该如何处理第 3 步的身份验证失败?我如何告诉他的客户端应用程序身份验证失败?用户可以按下取消按钮,或者拒绝许可,或者只是输入错误的详细信息。

【问题讨论】:

    标签: apigee


    【解决方案1】:

    当您使用

    启动 OAuth 2.0(舞蹈)时
    /authorize
    
    1. 用户代理登陆/login页面(由您创建/托管), 发布重定向。
    2. enduser(user-agent) 提交用户名/密码 到您托管的页面。在这里您收集凭据和 提交到 Apigee,如果身份验证失败,发送 HTTP 401 回复。现在您的应用程序应该可以重新渲染 登录页面和闪烁的“无效凭据”。
    3. 现在如果用户通过身份验证但拒绝授权请求 同意页面,您应该重定向到提供的“redirect_uri” 由客户提供,带有错误代码。

    【讨论】:

      【解决方案2】:
      How do I tell he client app that the authentication failed? 
      

      登录应用程序会将控件重定向回应用程序重定向 URI - 在 URL 中添加错误代码/描述作为哈希参数。如果成功,URL 会附加代码或令牌。

      您可以直接从您的登录应用程序执行此重定向,但我建议先将重定向调用调用到 Apigee 代理,然后让 Apigee 代理将重定向发送回应用程序。无论是成功还是失败。通过这种方式,您将受益于使用 Apigee 分析,帮助您了解有多少 OAuth 因什么原因失败等。

      编辑: 您可以使用为成功流程构建的相同 GenerateAuthorizationCode 代理。当登录失败或成功时,无论哪种情况,您都需要将该信息传递给此代理。通常,登录应用程序和此代理应使用公共会话存储共享此信息。您不能仅使用重定向参数传递此信息,因为客户端用户代理可以更改该参数。当您重定向到 GenerateAuthorizationCode 重定向代理时,请在 URL 中附加一个随机会话 ID。 GenerateAuthorizationCode 代理可以使用该 ID 从会话存储中查找登录状态。然后,您可以根据登录是否成功发回带有错误的重定向或正确的 oauth 代码。可以使用 apigee 网关中的分布式缓存资源轻松实现会话存储。登录应用程序可以使用内部 API 放置/获取会话。而代理可以使用策略来检索会话信息。

      【讨论】:

      • 我有一个 GenerateAuthorizationCode 代理设置,成功时我的登录应用程序重定向到 /oauth/authorizationcode?client_id=%s&response_type=code&app_enduser=%s 当登录失败时我应该使用相同的代理吗?如何将错误代码传回?还是我应该创建一个完全不同的代理?
      • 顺便感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多