MS Graph API - 获取需要多重身份验证的访问令牌
MS Graph API - Get Access Token w/ Multi-Factor Authentication Required
我正在尝试使用 Postman "Get User Access Token" 和 Microsoft Graph API;但是,我的组织最近启用了多因素身份验证,但此调用现在失败了,说明:
"error": "invalid_grant",
"error_description": "AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access...
Microsoft documentation for MS Graph API using Postman 写得很好,但是缺少如何将第二个因素传递给请求的明确说明。
错误指向 https://login.microsoftonline.com/error?code=50076,但这只给出相同的信息。
我有 MS 验证器应用程序,它给了我这个 key/second 因素;但是,我不知道如何将它添加到 body/headers 中。 我正在尝试查找用于传递附加安全令牌的特定密钥名称(我尝试过 'token,' 'pcToken,' 'key,' 等.)
.
MFA 不支持用户名密码验证,因为 MFA 需要交互。但是如果需要使用用户名密码认证登录就没有交互了。
参见Username Password Authentication:
users who need to do MFA won't be able to sign-in (as there is no
interaction)
我遇到了同样的困境,所以我是这样解决的:
首先,我得到的信息来自:
https://github.com/microsoftgraph/microsoftgraph-postman-collections/issues/4
您需要在 Postman 中使用 OAuth 2.0 授权。使用相同的 GET 请求,转到授权 -> 将类型更改为 'OAuth 2.0',然后单击 'Get New Access Token'。
从那里,您可以输入您自己的详细信息:
(将 [TenantID] 替换为您自己的)
- 回调URL:您在应用程序身份验证中声明的重定向URL。
- 授权URL:
https://login.microsoftonline.com/[TenantID]/oauth2/v2.0/authorize
- 访问令牌URL:https://login.microsoftonline.com/[TenantID]/oauth2/v2.0/token
- 客户端 ID:您是应用程序的 ID。
- 客户端机密:您是在 'Certificates & secrets' 部分下设置的应用程序机密。
Screenshot
上面的答案没有描述任何与通过代码绕过 MFA 相关的内容。
MFA 身份验证您需要使用代理身份验证,其中 MS Authenticator 应用程序充当代理。
如果您集成了适当的库(ADAL、MSAL),您的代码将能够与代理正确交互。
在 Android 和 iOS,经纪人启用:
单点登录 (SSO)。您的用户不需要登录每个
申请
设备识别(通过访问设备
工作时在设备上创建的证书
加入)。为此,我们使用 Intune 管理的设备。
应用程序身份验证(真的是outlook which
打电话给我?)。它的工作方式是当应用程序调用代理时,
它传递了它的重定向 url,并且代理验证了它:
例如,在 iOS 上,重定向 URL 是 ms-word://com.msft.com,代理
解析并获取 appId(在 // 之后)并验证它是否相同
作为调用应用程序的 appId,它知道(通过 OS)。
在 Android 上,重定向 URL 具有以下形式 msauth://com.msft.word/.
要启用其中一项功能,应用程序开发人员需要在平台参数中将 UseBroker 布尔值设置为 true。他们还需要实现一个委托来响应代理回调应用程序,如 Android 和 iOS 上特定于代理的平台参数属性中所述。
请参阅 MS 文档以获取经纪人身份验证示例:
我正在尝试使用 Postman "Get User Access Token" 和 Microsoft Graph API;但是,我的组织最近启用了多因素身份验证,但此调用现在失败了,说明:
"error": "invalid_grant",
"error_description": "AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access...
Microsoft documentation for MS Graph API using Postman 写得很好,但是缺少如何将第二个因素传递给请求的明确说明。
错误指向 https://login.microsoftonline.com/error?code=50076,但这只给出相同的信息。
我有 MS 验证器应用程序,它给了我这个 key/second 因素;但是,我不知道如何将它添加到 body/headers 中。 我正在尝试查找用于传递附加安全令牌的特定密钥名称(我尝试过 'token,' 'pcToken,' 'key,' 等.)
.
MFA 不支持用户名密码验证,因为 MFA 需要交互。但是如果需要使用用户名密码认证登录就没有交互了。
参见Username Password Authentication:
users who need to do MFA won't be able to sign-in (as there is no interaction)
我遇到了同样的困境,所以我是这样解决的:
首先,我得到的信息来自:
https://github.com/microsoftgraph/microsoftgraph-postman-collections/issues/4
您需要在 Postman 中使用 OAuth 2.0 授权。使用相同的 GET 请求,转到授权 -> 将类型更改为 'OAuth 2.0',然后单击 'Get New Access Token'。
从那里,您可以输入您自己的详细信息: (将 [TenantID] 替换为您自己的)
- 回调URL:您在应用程序身份验证中声明的重定向URL。
- 授权URL: https://login.microsoftonline.com/[TenantID]/oauth2/v2.0/authorize
- 访问令牌URL:https://login.microsoftonline.com/[TenantID]/oauth2/v2.0/token
- 客户端 ID:您是应用程序的 ID。
- 客户端机密:您是在 'Certificates & secrets' 部分下设置的应用程序机密。
Screenshot
上面的答案没有描述任何与通过代码绕过 MFA 相关的内容。 MFA 身份验证您需要使用代理身份验证,其中 MS Authenticator 应用程序充当代理。 如果您集成了适当的库(ADAL、MSAL),您的代码将能够与代理正确交互。
在 Android 和 iOS,经纪人启用:
单点登录 (SSO)。您的用户不需要登录每个 申请
设备识别(通过访问设备 工作时在设备上创建的证书 加入)。为此,我们使用 Intune 管理的设备。
应用程序身份验证(真的是outlook which 打电话给我?)。它的工作方式是当应用程序调用代理时, 它传递了它的重定向 url,并且代理验证了它: 例如,在 iOS 上,重定向 URL 是 ms-word://com.msft.com,代理 解析并获取 appId(在 // 之后)并验证它是否相同 作为调用应用程序的 appId,它知道(通过 OS)。 在 Android 上,重定向 URL 具有以下形式 msauth://com.msft.word/.
要启用其中一项功能,应用程序开发人员需要在平台参数中将 UseBroker 布尔值设置为 true。他们还需要实现一个委托来响应代理回调应用程序,如 Android 和 iOS 上特定于代理的平台参数属性中所述。
请参阅 MS 文档以获取经纪人身份验证示例: