【问题标题】:Cumulocity REST-API Passing TFA Header TokenCumulocity REST-API 传递 TFA 标头令牌
【发布时间】:2021-04-29 10:33:22
【问题描述】:

我有一个需要双重身份验证的累积租户。我想在这个租户following this example 中创建一个新的微服务应用程序,方法是使用POST 请求调用/applications 端点。这已经在没有 MFA 的虚拟租户中有效,但不适用于具有 MFA 的租户。

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

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

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

示例调用

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

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

【问题讨论】:

    标签: cumulocity


    【解决方案1】:

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

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

    1.请求您的 JWT 令牌

    这可以通过针对 oauth 端点的表单 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 调用

    在上一个请求的响应标头中,您应该看到一个 Set-Cookie 标头。从此标题中,您可以获取 JWT。请注意,Set-Cookie 标头设置了多个 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 '{
    }'
    

    【讨论】:

    • 谢谢你,工作完美。对于任何来到这里并使用邮递员的人,这里有一个简短的 sn-p 来提取不记名令牌和 xsrf 令牌,可用于进一步的请求var headers = pm.response.headers.toObject() var setCookiesAuth = headers["set-cookie"][0] var setCookiesXsrf = headers["set-cookie"][1] var bearerToken = setCookiesAuth.split(";")[0].split("=")[1] var xsrfToken = setCookiesXsrf.split(";")[0].split("=")[1] pm.environment.set("xsrf_token", xsrfToken); pm.environment.set("bearer_token", bearerToken);
    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多