我已经编写了自己的登录应用程序来保护我的api遵循oauth-login-app示例。
我已经实现了Web服务器流程,一切都运行良好。
我的问题是:我应该如何在第3步处理身份验证失败?如何告诉客户端应用程序验证失败?用户可以按取消按钮,或拒绝许可或只输入错误的详细信息。
答案 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
/login
页面(由您创建/托管),
发布重定向。 redirect_uri
”
由客户提供,错误代码。