无需解释即可替代 OAuth 2.0 ROPC HTML/Javascript

Alternative to OAuth 2.0 ROPC without interpreting HTML/Javascript

我处于使用 HTTPS 客户端代表用户请求访问令牌的嵌入式设备环境中(应用程序需要委派权限)。

我目前正在使用 OAuth 2.0 ROPC (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc) 获取我的令牌,一切正常。

但由于此身份验证已弃用,我想改用更安全的解决方案,适用于混合身份联合方案。

我看到还有许多其他解决方案,但我找不到不需要解释 HTML/JS 响应的解决方案。

这里有一个 CURL 例子来解释我的观点:

ROPC 请求:

curl -X POST "https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token" --data "grant_type=password&scope=EWS.AccessAsUser.All&username=<username>&password=<password>&client_id=<client_id>&client_secret=<client_secret>" -H "Content-Type: application/x-www-form-urlencoded"

回应: {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"eyJ0eX....1234"}

在这里我可以直接从响应中提取令牌。

但使用其他方式获取委托权限令牌,例如 OAuth 2.0 隐式授予流程 (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow),响应始终是我无法解释的 HTML。

所以在这里我想知道是否有解决这种情况的方法。

提前致谢, 阿洛伊斯·凯鲁

无法在工具中使用隐式流获取token,只能在浏览器中运行请求url。因为使用隐式流需要您登录。请注意,在此之前,您必须启用 id tokenaccess token.

在浏览器中请求 ID 令牌和访问令牌。

https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize?
client_id={client id}
&response_type=id_token token
&redirect_uri={redirect_uri}
&scope=openid EWS.AccessAsUser.All
&response_mode=fragment
&state=12345
&nonce=678910