Cumulocity REST-API 传递 TFA Header 令牌

Cumulocity REST-API Passing TFA Header Token

我有一个需要 two-factor 身份验证的 cumulocity 租户。我想通过使用 POST 请求调用 /applications 端点,在此租户 following this example 中创建一个新的微服务应用程序。这在没有 MFA 的虚拟租户中已经有效,但不适用于具有 MFA 的租户。

即使我在 header as described here 中提供了 TFAToken。我收到 401 未经授权的错误

"message": "Invalid credentials! : TFA TOTP code required.",

我是否需要以特殊格式从身份验证器传递 TFA 令牌 - 我只是插入了 6 位数字,没有任何空格。是否需要编码?

调用示例[​​=19=]

curl --location --request POST 'my_tenant/application/applications' \
--header 'TFAToken: 000000' \
** some other headers **
--data-raw '{
}'

非常感谢任何帮助或指点:)

您不能将 TOTP 与基本身份验证请求结合使用。您引用的文档部分仅适用于通过短信使用 TFA 的情况。似乎文档对此并不完全清楚,但在激活 TOTP 的 UI 中它说 “TOTP 需要 OAuth 内部登录模式。”

因此,在使用 TOTP 时,您必须遵循 OAuth 流程进行身份验证:

1.请求您的 JWT 令牌

这可以通过对 oauth 端点的 form-urlencoded 请求来实现。 https://cumulocity.com/guides/10.7.0-beta/reference/login/

POST /tenant/oauth HTTP/1.1
Host: examples.cumulocity.com
Content-Type: application/x-www-form-urlencoded

grant_type=PASSWORD&username=<<myUser>>&password=<<myPassword>>&tfa_code=<<myTfaCode>>&tenant_id=<<myTenant>

2。使用 JWT 进行后续 API 调用

在上一个请求的响应 header 中,您应该会看到 Set-Cookie header。从这个 header 你可以获取 JWT。请注意 Set-Cookie header 设置了多个 cookie。你想获得授权(相当长的 base64 字符串)。 然后,您可以使用不记名令牌身份验证来执行您的请求:

curl --location --request POST 'my_tenant/application/applications' \
--header 'Authorization: Bearer <<the copy+pasted base64 string from the Set-Cookie header>>' \
** some other headers **
--data-raw '{
}'