首页 文章

如何使用Azure AD OAuth2的Qt网络授权

提问于
浏览
0

我正在尝试使Qt网络授权OAuth2 example for Reddit适用于Azure AD . 我去了https://portal.azure.com/ - > Azure Active Directory - >应用程序注册然后单击"New application registration"并输入:

Azure Create

我将生成的应用程序ID复制到应用程序中,然后从Authorization Code Grant Flow获取了URI:

第一部分似乎有效;网页打开,并要求我验证登录 . 但是令牌请求似乎失败了 . 我的记录显示:

AzureWrapper::grant()+
setModifyParametersFunction(): stage = RequestingAuthorization
AzureWrapper::grant()-
statusChanged(): status = TemporaryCredentialsReceived
setModifyParametersFunction(): stage = RequestingAccessToken
qt.networkauth.oauth2: Unexpected call
qt.networkauth.replyhandler: Error transferring https://login.microsoftonline.com/common/oauth2/token - server replied: Bad Request

我做错了什么?

1 回答

  • 0

    Azure AD需要在授权代码请求或访问令牌中请求您要使用的目标Web API(安全资源)的App ID URI . (见https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

    您可以在授权代码请求中添加此额外资源参数,如下所示:

    oauth2.setModifyParametersFunction([](QAbstractOAuth::Stage stage, QVariantMap* parameters) {
        if (stage == QAbstractOAuth::Stage::RequestingAuthorization) {
            parameters->insert("resource", "<App ID URI>");
        }
    });
    

相关问题