首页 > 解决方案 > 没有使用用户名和密码通过 Azure AD OAuth2.0 ROPC 流获取刷新令牌和 id_token

问题描述

我正在使用带有用户详细信息和客户端详细信息的 ROPC Flow 来获取访问令牌和刷新令牌。但我只获得访问令牌,这将在 1 小时内到期。

我的前端应用程序有登录窗口,我们在其中提供 AD 用户凭据,这会发出一个发布请求并获得成功的 FE。

我有两个问题:

  1. 使用 http://localhost:3000 发出用户登录请求时出现 CORS 问题,并带有 access-control-allow-origin 标头错误。

  2. 我想为 Continues App 登录获取刷新令牌,或者我是否将访问令牌的生命周期设置为一天。

要求:

// Line breaks and spaces are for legibility only.  This is a public client, so no secret is required.

POST {tenant}/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20openid%20profile%20offline_access
&username=MyUsername@myTenant.com
&password=SuperS3cret
&grant_type=password

回复:

{
    "token_type": "Bearer",
    "scope": "api://94849942785375897059789375379/FIles.Read",
    "expires_in": 3598,
    "ext_expires_in": 3598,
    "access_token": 8YU4bMhafsfhaeoahehviyy8786w89ufo2ofj29h8gMWnB633NLWn7JQ"
}

标签: azureoauth-2.0azure-active-directory

解决方案


请求token时需要在scope参数中添加offline_accessopenid,尝试添加,会得到id tokenrefresh token

在此处输入图像描述

更新:

您的应用程序将需要一个后端来获取数据并将其返回到前端。所以尝试从后端调用令牌端点。


推荐阅读