gpt4 book ai didi

ios - 对 MS Graph API 的请求给了我 "Authorization Request Denied - Insufficient privileges to complete the operation"

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:30:44 25 4
gpt4 key购买 nike

我对“授权请求被拒绝 - 权限不足,无法完成操作”消息有疑问,我不断从对 Windows Graph API 的请求中收到该消息。

具体来说,我在 Azure 云中工作。我有一个调用 API 的 iOS 移动应用程序。我已在我的门户中打开“Active Directory 身份验证”。

然后,在客户端(iOS):

[self.todoService.client loginWithProvider:@"windowsazureactivedirectory"
controller:self
animated:YES
completion:^(MSUser *user, NSError *error) {

if(!error && user) {
[self refresh];

}
}]; //loginWithProvider

因此返回一个有效的 MSUser 对象。我看到 Web 登录 Controller 出现,我使用我的 un/pw 登录,然后它允许我访问 Easy Table 的数据...等等。

现在,我想调用我在 Azure 中创建的名为 getUserData 的 Easy API。因此,我只需插入这样的 invokeAPI 代码 (iOS):

[self.todoService.client loginWithProvider:@"windowsazureactivedirectory"
controller:self
animated:YES
completion:^(MSUser *user, NSError *error) {

if(!error && user) {

//NSMutableDictionary * dict = [NSMutableDictionary dictionary];
//[dict setObject:@YES forKey:@"complete"];

NSLog(@"%s - %@", __FUNCTION__, user);
[self refresh];

[self.todoService.client invokeAPI:@"getUserData"
body:nil
HTTPMethod:@"POST"
parameters:nil
headers:nil
completion:^(id _Nullable result, NSHTTPURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"%s - API returned response! ", __FUNCTION__);
NSLog(@"%@", result); //TODO: user info here!! :D

}]; //invokAPI

} //if user returned from AAD login is valid

}]; //loginWithProvider

一切都很好,因为 API 已被调用,并且我可以看到响应数据。

在服务器端(Node JS),我基本上做了三件事:

第一个是从请求对象中获取用户对象ID:

req.azureMobile.user.getIdentity().then((data) => {
//get user object ID
}

第二,向 https://login.windows.net提出请求 使用用户名/密码获取访问 token 。

var options = {
url: "https://login.windows.net/" + tenant_domain + "/oauth2/token?api-version=1.0",
method: 'POST',
form: {
grant_type: "client_credentials",
resource: "https://graph.windows.net",
client_id: clientID,
client_secret: key
}
};

req(options, function (err, resp, body) {
//get the result back
}

我收到了一大堆数据,包括访问 token 。

第三,向https://graph.windows.net/提出请求,并提供此访问 token 以及我的用户对象 ID:

var options = {
url: "https://graph.windows.net/" + tenant_domain + "/users/" + objectId + "?api-version=1.0",
method: 'GET',
headers: {
"Authorization": "Bearer " + access_token
}
};

这样我就可以用户数据。现在,在单独的测试订阅中,我在 AAD 管理中设置了 AAD 和 Graph 的所有基本读取权限。我成功地获取了用户的完整数据,如下所示:

user =     {
accountEnabled = 1;
assignedLicenses = (
);
assignedPlans = (
);
city = xxxxxxxxx;
country = xxxxxxxxxx;
department = Dev;
dirSyncEnabled = "<null>";
displayName = xxxxxx;
facsimileTelephoneNumber = "<null>";
givenName = hehe;
jobTitle = "iOS dev";
lastDirSyncTime = "<null>";
mail = "<null>";
mailNickname = "xxxxxxxxxx.com#EXT#";
mobile = "+xx xxx xxxx 3852";
objectId = "xxxxxxx-2c70-4aab-b261-3b2b97dc5c50";
objectType = User;
"odata.metadata" = "https://graph.windows.net/xxxxxxxxxx.onmicrosoft.com/$metadata#directoryObjects/Microsoft.WindowsAzure.ActiveDirectory.User/@Element";
"odata.type" = "Microsoft.WindowsAzure.ActiveDirectory.User";
otherMails = (
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="433b3b3b3b3b3b3b3b3b3b3b3b03242e222a2f6d202c2e" rel="noreferrer noopener nofollow">[email protected]</a>"
);
...etc
}

但是,在另一个订阅中,我执行了完全相同的步骤。甚至像这样检查所有权限:

enter image description here

我不断收到“授权请求被拒绝,权限不足”消息。错误为空,所以我知道其他一切都正确完成。

我不明白为什么,因为一切都在处理,并且我检查了所有 AAD 和 Graph 权限。

日志结果:

-----正文------

'{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"权限不足,无法完成操作。"}}}'

感谢您的帮助,感谢大家的时间

最佳答案

您可以尝试将您使用的AD应用程序的角色升级为管理员权限。在 PowerShell 中运行以下命令:

Connect-MsolService
$ClientIdWebApp = '{your_AD_application_client_id}'
$webApp = Get-MsolServicePrincipal –AppPrincipalId $ClientIdWebApp
#use Add-MsolRoleMember to add it to "Company Administrator" role).
Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId

关于ios - 对 MS Graph API 的请求给了我 "Authorization Request Denied - Insufficient privileges to complete the operation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com