Ale*_*bak 17 c# azure oauth-2.0 azure-active-directory azure-ad-graph-api
我被告知在这里提出一个关于Azure AD Graph Api的问题,而不是将其作为相应GitHub示例存储库的问题提出,我希望Azure Graph API团队监控SO并可以帮助我们解决这个github示例问题
该问题的一些额外背景:
我们正在使用Microsoft.Azure.ActiveDirectory.GraphClient nuget在Azure AD测试租户中创建和管理用户.在此示例应用程序之后, 我们可以通过Graph API在Azure AD中创建和更新用户.这很好,直到大约2-3天前发生的某个时刻(不确定确切的时刻,我们在周二早上的AU时间发现问题.上周成功运行是在上周五).它是100%正常工作的代码,并确认它不是我们的代码 - 我再次浏览了示例应用程序 - 它现在也已经破坏了.我已经使用最新的GraphClient v2.1.0和来自示例应用程序的原始版本-v2.0.6对其进行了测试
为了简化问题的测试,我已经制作了一个基于LINQ的示例并修改了一些秘密(如果你想运行它,你需要按照控制台应用程序示例指南输入你的值,而不是原始的示例应用程序)这里也是小提琴捕获(编辑)
fiddler捕获中很少有注意事项 - Azure AD Graph API不会返回刷新令牌以及访问令牌:
{"expires_in":"3599","token_type":"Bearer","scope":"UserProfile.Read",
"expires_on":"1441183928","not_before":"1441180028","resource":"https://graph.windows.net",
"access_token":"TOKEN WAS HERE"}
Run Code Online (Sandbox Code Playgroud)
我可以在这里看到范围字符串的问题,但是当我按照Sample app调用令牌时,我们没有在GraphClient中设置任何explict范围(这个代码之前很好,正如我之前提到的那样)
用户创建响应在发生的事情及其发生的原因方面很清楚
{"odata.error":
{"code":"Authorization_RequestDenied","message":
{"lang":"en","value":"Insufficient privileges to complete the operation."}
}
}
Run Code Online (Sandbox Code Playgroud)
但是目前尚不清楚如何通过任何这些AuthenticationContext.AcquireToken方法重载来请求额外的权限范围. 同样奇怪的是,相同的代码之前完全正常运行并且在经过一些神秘的变化后现在被破坏了吗?
所以我几乎没有问题:
如何在GraphClient库中添加额外的范围权限以获取启用了用户修改的Graph API令牌.这可能是问题的乐队援助解决方案.
看起来Azure AD尝试管理门户中客户端应用程序的权限.但是,Native Client类型的应用程序没有额外的权限.如何显式更新应用程序权限,以便现有代码可以再次运行.有可能吗?
任何人都可以推荐其他库与GraphAPI进行交互,这允许消费者明确指定所请求令牌的范围吗?
================更新================
是的,我看到了同意流程文档.追逐这个问题我创建了新的Azure AD租户,添加了全新的应用程序并添加了所有可能的权限,包括所有可用的应用程序和委托权限: 现在看起来像这样.我也
我可以获得一个带有长列表范围的令牌,例如
Directory.AccessAsUser.All Directory.Read Directory.Write User.Read User.ReadWrite User.Read.All User.ReadBasic.All User.ReadWrite.All user_impersonation UserProfile.Read
- 削减不相关的范围 -
但它仍然给了我403:
{"odata.error":
{"code":"Authorization_RequestDenied","message":
{"lang":"en","value":"Insufficient privileges to complete the operation."}
}
}
Run Code Online (Sandbox Code Playgroud)
有一点值得注意 - 在范围列表中没有Directory.ReadWrite.All
但是这里的文档说: Directory.ReadWrite.All:读写目录数据
================更新================
PS:Azure AD工程师的一些技术请求信息:
这里的问题是您没有正确配置应用程序以请求对 Graph API 的正确权限。为此,您必须进入 Azure 管理门户并配置“对其他应用程序的权限”,以包含您的应用程序需要能够读取/写入目录的范围。
我们这里有一些文档可以帮助您: https://msdn.microsoft.com/en-us/library/azure/dn132599.aspx(描述同意流程) https://msdn.microsoft.com/Library/Azure /Ad/Graph/api/graph-api-permission-scopes(描述您的应用程序需要请求的图形 API 公开的特定权限)
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |