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 '{
}'
我有一个需要 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 '{
}'