【问题标题】:APIGEE: Generate never expiring accesstokenAPIGEE:生成永不过期的访问令牌
【发布时间】:2014-08-02 05:29:27
【问题描述】:

我在 APIGEE BaaS 中创建了一个集合,现在公开一个 API,该 API 将来自该集合以及来自其他后端服务的数据混合在一起。从 API 调用后端服务时,我使用的是访问令牌。但是,默认情况下,访问令牌的到期时间设置为 604800 毫秒。我尝试使用以下 API 调用更改默认 ttl,

输入:https://api.usergrid.com/<myorg>/<myapp>?client_id=<client_id>&client_secret=<client_secret> {"accesstokenttl":0}

它给了我如下响应,这似乎表明请求已通过。

"uri": "https://api.usergrid.com/<myorg>/<myapp>",
"entities": [
    {
        "uuid": "93495580-ed20-11e3-89d5-25d72fde3d7e",
        "type": "application",
        "name": "<myorg>/<myapp>",
        "created": 1402020991714,
        "modified": 1402535205960,
        "accesstokenttl": 0,

但是,当我尝试使用以下请求获取新的访问令牌时,它仍然显示到期设置为 604800 毫秒。

发帖:https://api.usergrid.com/&lt;myorg&gt;/&lt;myapp&gt;/token {"grant_type":"client_credentials", "client_id":&lt;client_id&gt;, "client_secret":&lt;client_secret&gt;

给我以下回应:

{
"access_token": "UREDStK1padfdffayGfNfoYtCiAAAAUaxsjHnfhkLkG1abYWVPC_MMWD3VFRaHyA",
"expires_in": 604800,

这里有什么我遗漏的吗?

【问题讨论】:

    标签: oauth-2.0 apigee


    【解决方案1】:

    您已在应用程序级别正确更新了您的最大令牌到期时间(总结):

    PUT: https://api.usergrid.com/{org}/{app}/?client_id={app_client_id}&client_secret={app_client_secret}
    

    使用 JSON 有效负载(不要忘记设置 Content-Type: application/json 标头!)

    {
       "accesstokenttl":31104000000
    }
    

    其中 tokenttl 是以毫秒为单位的时间戳(或不会过期,如您在示例中所做的那样)。

    您现在需要做的实际上是在令牌调用上设置 TTL 属性:

    POST https://api.usergrid.com/{org}/{app}/token 
    
    {
        "username":"{username}", 
        "password":"{password}", 
        "grant_type":"password", 
        "ttl":"31104000000"
    }
    

    这是Apigee docs 的链接,其中详细讨论了令牌 TTL。

    【讨论】:

    • 我尝试使用api.usergrid.com{org}/{app}/token 将 ttl 设置为 0,但它仍然给了我相同的响应 - "{ "access_token": "UREDStK1padfdffayGfNfoYtCiAAAAUaxsjHnfhkLkG1abYWVPC_MMWD3VFRaHyA", "expires_in ": 604800,"
    • 尝试将其设置为较大的数字,例如 31104000000(1 年)。
    • Hrm... 仔细检查用户/通行证以确保?除非它实际上是错误的用户/通行证,否则从未见过该错误。
    • 如果我给出一个相当大的值,比如 31104000000,它会给我一个错误,说 { "error": "invalid_grant", "error_description": "invalid username or password" }。但是,如果我将其设置为 311040000(=高于值 / 100),它将到期设置如下:{“access_token”:“ABCEDEFFi8PHuO_pu9cr9aaQQAAAUag-y8ZuepPiYmXCSeUY7rUqhChgq2FRJs”,“expires_in”:311040,
    • 好的,在这种情况下,我认为您的应用级别 TTL 设置不正确。
    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2019-05-31
    • 2018-04-26
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多