使用Apigee代理处理OAuth2身份验证失败

时间:2014-02-14 20:26:10

标签: apigee

我已经编写了自己的登录应用程序来保护我的api遵循oauth-login-app示例。

我已经实现了Web服务器流程,一切都运行良好。

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

2 个答案:

答案 0 :(得分:1)

How do I tell he client app that the authentication failed? 

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

您可以直接从登录应用程序进行此重定向,但我建议首先将重定向呼叫转移到Apigee代理,然后让Apigee Proxy将重定向发送回应用程序。无论是成功还是失败。通过这种方式,您将获得使用Apigee分析的好处,帮助您了解有多少OAuth因为什么原因而失败等。

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

答案 1 :(得分:1)

使用

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