我的团队正在使用 Azure AD 对用户进行身份验证,并将生成的 ID 令牌发送到所有 WEB API 调用。我想单独测试 WEB API,为此,我想使用 Postman 从 Azure AD 生成 ID 令牌。我有用户的用户名和密码。实现这一点的最佳方法是什么?
我不想选择服务主体,因为它不能满足我们的索赔需求。
在这种情况下,您需要设置“密码凭据”OAuth 授予类型。 在使用 Postman 之前,应按照此处详细说明的方式配置 Azure AD:https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc
生成 Access Token 的 Postman 配置如截图所示:
您可以使用以下请求,使用邮递员、httpie 或curl 等工具从天蓝色广告生成 id_token 和 access_token。
请注意,范围必须设置为“openid”
您还需要 azure 广告上的用户的用户名(电子邮件)和密码。您可能需要在 Azure 广告上禁用 MFA,才能单独使用电子邮件和密码登录。
下面是发送到 azure ad 以获取 id 令牌和访问令牌的请求。
POST /aaba3b90-a8f8-4806-9be3-e67f5e0b62e3/oauth2/v2.0/token?grant_type=client_credentials HTTP/1.1
Content-Length: 204
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
User-Agent: HTTPie
grant_type=password&client_secret=ijf8Q%7EDv8LRd1EygiZu3TVuK31D_ahyw3LOBHaih&client_id=91a872c6-0d1e-4f66-9151-4a71bd5a807a&scope=openid&username=gilbert%40gssenyonjogmail.onmicrosoft.com&password=mypassword
再次,响应包含 id_token 和 access_token。如果您像我一样并且使用 Passport-azure-ad 将其连接到 Web api,请使用 id_token 而不是 access_token。 您可以从 https://jwt.ms 验证令牌。留意受众 (aud)、发行者 (iss) 和版本 (ver)。