我编写了自己的登录应用程序以保护我的api,例如oauth-login-app示例。使用Apigee代理处理OAuth2身份验证失败
我已经实现了Web服务器流程,一切都很好。
我的问题是:我应该如何在第3步处理认证失败?我如何告诉他的客户端应用程序验证失败?用户可以按取消按钮,或拒绝许可或只输入错误的细节。
我编写了自己的登录应用程序以保护我的api,例如oauth-login-app示例。使用Apigee代理处理OAuth2身份验证失败
我已经实现了Web服务器流程,一切都很好。
我的问题是:我应该如何在第3步处理认证失败?我如何告诉他的客户端应用程序验证失败?用户可以按取消按钮,或拒绝许可或只输入错误的细节。
当您启动的OAuth 2.0(舞蹈)与
/authorize
/login
页面的用户代理的土地(创建/你主持), 后重定向。redirect_uri
”提供 通过客户端,并显示错误代码。How do I tell he client app that the authentication failed?
登录应用程序会将控件重定向回应用程序重定向URI - 在URL中将错误代码/描述添加为散列参数。在成功的情况下,URL附加了代码或令牌。
您可以直接从您的登录应用程序重定向,但我建议首先将重定向呼叫转到Apigee代理,并让Apigee Proxy将重定向发送回应用程序。在成功和失败的情况下。通过这种方式,您将获得使用Apigee分析的好处,该分析有助于您了解有多少OAuth由于什么原因而失败等。
编辑: 您可以使用您为成功流构建的同一个GenerateAuthorizationCode代理。登录失败或成功时,无论哪种情况,您都需要将该信息传递给此代理。通常,登录应用程序和此代理应使用常见会话存储共享此信息。您不能仅使用重定向参数传递此信息,因为客户端用户代理可以更改该信息。当您重定向到GenerateAuthorizationCode重定向代理时,通过在URL中附加一个随机会话ID来完成此操作。 GenerateAuthorizationCode代理可以使用该标识从会话存储中查找登录状态。然后,您可以根据登录是否成功发送错误重定向或适当的oauth代码。会话存储的简单实现可以使用apigee网关中的分布式缓存资源完成。登录应用程序可以使用内部API放置/获取会话。代理可以使用策略来检索会话信息。
我有一个GenerateAuthorizationCode代理设置,并成功当我登录的应用程序重定向到'/ OAuth的/ authorizationcode?CLIENT_ID =%S&RESPONSE_TYPE =代码&app_enduser =%s' 当用户登录失败,我应该使用相同的代理服务器?我如何传回错误代码?或者我应该创建一个完全不同的代理? –
感谢您的帮助! –
根据评论编辑了答案。 –