【发布时间】:2014-03-14 09:05:25
【问题描述】:
按照oauth-login-app 示例,我编写了自己的登录应用程序来保护我的api。
我已经实现了网络服务器流程,一切正常。
我的问题是:我应该如何处理第 3 步的身份验证失败?我如何告诉他的客户端应用程序身份验证失败?用户可以按下取消按钮,或者拒绝许可,或者只是输入错误的详细信息。
【问题讨论】:
标签: apigee
按照oauth-login-app 示例,我编写了自己的登录应用程序来保护我的api。
我已经实现了网络服务器流程,一切正常。
我的问题是:我应该如何处理第 3 步的身份验证失败?我如何告诉他的客户端应用程序身份验证失败?用户可以按下取消按钮,或者拒绝许可,或者只是输入错误的详细信息。
【问题讨论】:
标签: apigee
当您使用
启动 OAuth 2.0(舞蹈)时/authorize
/login页面(由您创建/托管),
发布重定向。 redirect_uri”
由客户提供,带有错误代码。【讨论】:
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 放置/获取会话。而代理可以使用策略来检索会话信息。
【讨论】:
/oauth/authorizationcode?client_id=%s&response_type=code&app_enduser=%s 当登录失败时我应该使用相同的代理吗?如何将错误代码传回?还是我应该创建一个完全不同的代理?