2014-02-14 61 views

回答

1

当您启动的OAuth 2.0(舞蹈)与

/authorize 
  1. /login页面的用户代理的土地(创建/你主持), 后重定向。
  2. enduser(用户代理)将用户名/密码 提交到您所托管的页面。在这里,您收集证书并将其提交给Apigee,如果身份验证失败,则发送HTTP 401 响应。现在您的应用程序应该能够重新呈现 登录页面并且闪光灯“无效凭据”。
  3. 现在来,如果用户进行身份验证,但拒绝在 同意页面的授权请求,你应该重定向到“redirect_uri”提供 通过客户端,并显示错误代码。
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代理可以使用该标识从会话存储中查找登录状态。然后,您可以根据登录是否成功发送错误重定向或适当的oauth代码。会话存储的简单实现可以使用apigee网关中的分布式缓存资源完成。登录应用程序可以使用内部API放置/获取会话。代理可以使用策略来检索会话信息。

+0

我有一个GenerateAuthorizationCode代理设置,并成功当我登录的应用程序重定向到'/ OAuth的/ authorizationcode?CLIENT_ID =%S&RESPONSE_TYPE =代码&app_enduser =%s' 当用户登录失败,我应该使用相同的代理服务器?我如何传回错误代码?或者我应该创建一个完全不同的代理? –

+0

感谢您的帮助! –

+0

根据评论编辑了答案。 –