使用Azure Active Directory和OAuth2流为Microsoft Graph API身份验证设置自定



信息

我正在Microsoft Visual Studio 2017上构建一个自定义.Net Core API。这个想法是让这个自定义的API处理对MicrosoftGraph API的调用,并允许自定义的web应用程序调用这个自定义的API。我们已经配置了一个Microsoft Office 365开发人员站点和一个链接到该开发人员站点的Azure Active directory租户。租户帐户当前具有Microsoft Graph API的委派访问权限。这是所有这一切的起点:https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/?view=odsp-图形在线

问题

我在这里遵循了微软的文档:https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/aad-oauth?view=odsp-图形在线

我可以通过Postman并使用OAuth2流获得访问/刷新令牌:

  1. GET请求接收授权码(这是有问题的,必须通过我的浏览器手动执行(
  2. POST请求获取访问令牌/刷新令牌
  3. 对Graph API的调用使用访问令牌

我面临的问题是,我无论如何都找不到只使用Http请求(Postman,后来的HttpClient(执行OAuth2进程的第一步。为了获得实际的授权码,我必须打开一个浏览器,插入端点,然后它重定向我的浏览器,并在查询字符串参数中给我授权码。然后,我可以获取这个值,并将其插入访问/刷新令牌的Post请求中,然后获取令牌。由于此应用程序将在其专用服务器上连续运行,我不想担心令牌过期时必须返回并打开浏览器才能执行OAuth2过程的步骤1。这似乎应该是一件简单的事情,对授权代码的GET请求,但从我在文档中读到的内容来看,这似乎是通过使用浏览器的用户来完成的?如果我直接从PostMan调用这个端点,它会返回Html,而不是授权代码。

解决方案

我请求帮助确定通过普通Http请求获得授权代码的方法,或者以某种方式通过该步骤,然后让一个端点直接向我颁发令牌。将租户切换为应用程序权限会使OAuth2过程更容易吗?任何人对此有任何经验或有不同的设计选择,我将不胜感激。

对于身份验证代码流,这确实需要您分两个步骤来完成:

  1. 通过浏览器获取授权码
  2. 使用授权码获取访问令牌

事实上,建议您使用客户端凭据流,这样可以省去获取授权代码的操作。您可以通过poster中的client secret直接获取访问令牌。

最新更新