Python - 如何检查 OAuth2.0 错误代码?

问题描述

根据以下文档 (https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-aadsts-error-codes),0Auth2.0 给出了错误的 JSON 响应。

如果用户遇到 50105 错误代码,我想捕获错误重定向到我的 Django 应用程序中的特定页面

目前我的代码是:

try:
        token = get_token_from_code(request.get_full_path(),expected_state)
    except Exception as e:
        logger.error(e)

这给了我结果:

2020-12-29 14:41:10,842,842 Login ERROR (interaction_required) AADSTS50105: The signed in user '{EmailHidden}' is not assigned to a role for the application [APP ID].
Trace ID: 441e30e4-4fef-491b-99bf-4c277ae41700
Correlation ID: 3bcd16fe-f9aa-4954-8401-899a887b178c
Timestamp: 2020-12-29 14:41:10Z

我基本上想说的是:

except error_code == 50105:
     logger.error(e)
     return render(request,'50105_error.html')

我试过了:

except Exception as e:
     logger.error(dir(e))
     logger.error(e.json)

这表明 e.json.error_uri 是“https://login.microsoftonline.com/error?code=50105”,e.json.error 是“interaction_required”。文档说 error_codes 也应该包括在内,但这不是出于某种原因,否则我的页面重定向会以此为基础。

我尝试了以下方法但无济于事(生成了日志文件,但没有写入任何消息,这让我相信我的做法是错误的):

try:
        token = get_token_from_code(request.get_full_path(),expected_state)
    except Exception as e:
        if e.json.error == "interaction_required":
            logger.error("Exception test.")
            return render(request,'50105_error.html')
        else: 
            logger.error(e)

还有:

    try:
        token = get_token_from_code(request.get_full_path(),expected_state)
    except Exception as e:
        if e.json.error_uri == "https://login.microsoftonline.com/error?code=50105":
            logger.error("Exception test.")
            return render(request,'50105_error.html')
        else: 
            logger.error(e)

如何成功检查这些错误重定向自定义错误页面

我们将一如既往地感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)