使用 Azure AD 将 Kerberos 令牌交换为身份验证代码

问题描述 投票:0回答:1

问题

我有办法获取我的 Kerberos 令牌。我需要一个

curl
命令发送到 Azure AD(包括 Kerberos 令牌),以使其使用身份验证代码调用我的回调 URL。 (然后我将进行另一个调用以获取 JWT 访问令牌。)

我尝试过的事情

我尝试用谷歌搜索这个

curl
命令是什么,但我似乎找不到任何明确的信息。

使用另一个 IDP (WSO2),我可以发送正常的身份验证请求,而请求中不包含任何用户信息。然后发送回一个

WWW-Authenticate
标头,要求我协商身份验证。然后,我发送一个
Authentication
标头,并将
Negotiate {Kerberos Token}
作为值。然后使用授权代码调用我的回调 URL。但这些都不适用于 Azure AD。

当我向 Azure AD 发送第一个请求时,我会收到登录页面的 HTML(而不是与我的 Kerberos 令牌协商的请求)。 WSO2 有一种方法在请求中指示它所谓的“领域”。这让我表明我想使用集成的安全路由。我还没有找到与 Azure AD 类似的语法。

发送 Kerberos 令牌并获取授权代码所需的请求语法是什么?

注意:我实际上并不打算使用

curl
命令,但拥有它将使我能够将它的功能集成到我的代码中。

oauth-2.0 azure-active-directory kerberos
1个回答
-1
投票

要将 Kerberos 令牌发送到 Azure AD 并接收授权代码,您需要执行基于 Kerberos 的身份验证流程。与其他一些身份提供商不同,Azure AD 的身份验证流程由于其集成和协议的原因可能需要额外的步骤。

您可能需要使用资源所有者密码凭据 (ROPC) 授予类型将 Kerberos 令牌交换为授权代码。这涉及将带有您的凭据和令牌的 POST 请求发送到令牌端点。

这是该过程的高级示例:

curl -X POST "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id={your_client_id}&scope={your_scopes}&grant_type=password&username={your_username}&password={your_password}&assertion={your_kerberos_token}"

请记住,ROPC 流程可能存在限制和安全隐患,因此请确保您遵循安全身份验证的最佳实践。 Azure AD 可能会提供其他流程,例如使用 PKCE 的授权代码流程,以实现更安全和标准的身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.