授权码授权流程但没有浏览器

Posted

技术标签:

【中文标题】授权码授权流程但没有浏览器【英文标题】:authorization code grant flow but without browser 【发布时间】:2022-01-06 14:53:10 【问题描述】:

必须实现一个应用程序,从命令行获取 Azure AD 用户的用户名/密码并获取访问令牌以查询 ms 图形。 AD 应用程序已创建并配置为需要 MFA - 这是必须的(用户名/密码流不是一个选项)。 我可以使用授权代码授予流程,但这涉及打开浏览器并提供用户凭据,但我不想打开表单来填写凭据,我想在内部提供它们(从用户作为应用程序参数获取)。假设我在通过 ssh 连接到服务器后使用了这个应用程序。用户应通过授权应用程序 (MFA) 授权此登录。 有什么建议吗?谢谢。

【问题讨论】:

请问您可以使用 RestAPI(postman) 访问 ms Graph 吗? 【参考方案1】:

允许您获取凭据的唯一流程是 ROPC 流程,它不支持 MFA。

如果这是一个控制台应用程序,则可以选择设备代码流:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-device-code。 此流程为用户提供了他们需要在浏览器中输入的代码,他们可以在任何设备上打开该代码。 对我来说,这感觉是最好的选择。

【讨论】:

以上是关于授权码授权流程但没有浏览器的主要内容,如果未能解决你的问题,请参考以下文章

OAuth2.0 四种授权模式

通过js和ajax获取token及刷新token示例

IdentityServer4系列 | 授权码模式

OAuth2协议

使用 Java Spring Rest Api 执行授权码授予流程

Spotify API 从 redirect_uri 获取授权码