我已经使用 django_auth_adfs 库设置了一个 django 项目,以使用 Azure Active Directory 进行身份验证阶段。我已经使用rest_framework 设置了它的API,现在我尝试使用Postman 向它发送请求。我的问题是,如果我发送带有或不带有访问令牌的请求,我的结果只是 Microsoft 登录页面的原始 html 代码。我使用此链接来生成我的访问令牌:
https://dev.to/425show/calling-an-azure-ad-secured-api-with-postman-22co
我为我的 Azure 应用程序尝试了不同的 API 权限,例如 Azure Active Directory Graph、Microsoft Graph,以及我自己的项目名称下的一个权限,该权限来自我在公开 API 中配置为范围的权限。另外我想知道公司是否应该授予我在公开 API 中配置的 api 的访问权限?
这是我得到的结果,这是我的邮递员环境。在令牌注册过程中,系统提示我使用用户名、密码和发送到手机的验证码登录,然后令牌就成功生成了。但是,尽管我在标头中使用了令牌,但我仍然收到登录页面。另外关于 django 广告配置,它工作正常。人们可以使用他们的 Microsoft 帐户登录和注销,因此问题不应该存在。
使用 Azure Active Directory (AD) 验证 Django API 并通过 Postman 访问它的步骤。
在 Microsoft Entra ID 的应用程序注册中创建应用程序。选择支持的帐户类型作为 Microsoft Entra ID 租户 - api 的多租户和个人 Microsoft 帐户。
通过选择同意作为管理员和用户,在
Expose an API
中添加范围,如下图所示。
在 Django API 中使用 Instance 、ClientId 和 TenantId 。
"Instance": "https://login.microsoftonline.com/",
"ClientId": "18", //Application (Client) ID from 'Catalogue.Api' app registration overview blade
"TenantId": "932" // Tenant ID from '.Catalogue.Api' app registration overview blade
https://www.postman.com/oauth2/callback
在“身份验证”中选择“访问令牌”、“ID 令牌”并保存。
在邮递员应用程序中为您创建的 Api 应用程序添加 API 权限。
选择委托权限和api权限并添加权限。
创建新请求并选择身份验证类型为 OAuth 2.0 。
使用 Postman 应用程序详细信息更改回调 URL、身份验证 URL、访问令牌 URL、客户端 ID、客户端密钥、范围和状态
Callback URL: {{callbackUrl}}
Auth URL: https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/authorize
Token URL : https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/token
Client ID : {{clientId}}
Client Secret : {{clientSecret}}
Scope: {{scope}}
替换 Django API Url 并发送请求。