OAuth失败响应

时间:2019-06-10 05:48:50

标签: oauth

根据https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/

  

返回的错误响应带有HTTP 400状态代码(除非   否则指定),带有error和error_description参数。的   错误参数将始终是下面列出的值之一。

     
      
  • invalid_request
  •   
  • invalid_client
  •   
  • invalid_grant
  •   
  • invalid_scope
  •   
  • unauthorized_client
  •   
  • unsupported_grant_type
  •   

我是否可以自定义错误,例如“ invalid_captcha”或“ captcha_required”?

我想要,如果某人发送了3次错误的凭据,我将发送“ captcha_required”错误,并且下次必须发送有效的验证码。

我的问题是:

  1. 是否可以在OAuth中定义自定义错误代码?
  2. 有没有其他方法可以解决我的问题?

2 个答案:

答案 0 :(得分:1)

  1. 我不这么认为。
  2. 您始终可以在error_description中添加自定义错误。例如,captcha_required应该是

    { "error": "invalid_request", "error_description": "invalid_captcha", "error_uri": "whatever you want here" } 您可以访问error_description并查看它是否匹配。

答案 1 :(得分:0)

执行此操作的一种可能方法是引入自定义错误代码,并在error_description中使用它。

作为示例,Azure Active Directory B2C具有密码重置流程,其中,当用户单击“忘记密码”时,B2C实际上向应用程序引发了带有自定义错误描述AADB2C90118的错误,该错误现在可以执行自定义代码。由于AAD是oauth市长的一种实现,因此可以将其视为“可信来源”。

  

具有本地帐户的注册或登录用户流包括“忘记密码”了吗?体验首页上的链接。单击此链接不会自动触发密码重置用户流程。

     

相反,错误代码AADB2C90118返回到您的应用程序。您的应用程序需要通过运行重置密码的特定用户流来处理此错误代码。要查看示例,请看一个简单的ASP.NET示例,该示例演示用户流的链接。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-policies#linking-user-flows


            if (notification.ProtocolMessage.ErrorDescription != null && notification.ProtocolMessage.ErrorDescription.Contains("AADB2C90118"))
            {
                // If the user clicked the reset password link, redirect to the reset password route
                notification.Response.Redirect("/Account/ResetPassword");
            }