アクセストークンの有効期限

アクセストークンには有効期限がありますが、デフォルトでは有効期限として 2147483647 秒が設定されています。これは、約 68 年後に相当する時間のため、アクセストークンの期限切れによる再ログインを考慮する必要はありません。

セキュリティの観点から、アクセストークンの有効期限を変更することもできます。また、変更することにより、万一、アクセストークンが漏洩しても、攻撃を受け続けるリスクを回避できます。

有効期限が経過した後、そのアクセストークンを使って Kii Cloud にアクセスすると、API は実行エラーになります。Android、iOS、REST API では、リフレッシュトークンを使うと、新しいアクセストークンに自動更新することができます。

有効期限は初めにログインしたタイミングからの経過時間として設定します。一般的な Web アプリケーションのように、最終アクセス時刻からのアイドル時間ではない点に注意してください。

管理者機能によりユーザーの無効化が行われた場合は、有効期限にかかわらず、アクセストークンは無効になります。また、ユーザーのパスワードが変更された場合も、有効期限に関わらず、アクセストークンは無効になります。

API による有効期限の設定

アクセストークンを取得する際に有効期限を変更するには [Kii setAccessTokenExpiration:] メソッドを使用します。引数値でアクセストークンが有効な時間を設定してください。有効時間が設定されると、これ以降発行されるアクセストークンにこの設定が反映されます。

有効期限を設定した場合には authenticateWithToken:andExpiresAt:andBlock を使用してログインすると便利です。これにより、ログイン時に保存しておいた有効期限を指定できるため、accessTokenDictionaryに正しい有効期限を管理させることができます。

Swift 3:

  • // Get an access token and its lifetime from the storage with your own function.
    let token = getStoredToken()
    let expiresAt = getStoredTokenExpiresAt()
    
    do{
      // Authenticate a user with the access token.
      try KiiUser.authenticate(withTokenSynchronous: token, andExpiresAt: expiresAt)
    }catch let error as NSError {
      // Handle the error.
      return
    }
  • // Get an access token and its lifetime from the storage with your own function.
    let token = getStoredToken()
    let expiresAt = getStoredTokenExpiresAt()
    
    // Authenticate a user with the access token.
    KiiUser.authenticate(withToken: token, andExpiresAt: expiresAt, andBlock: {(usr , error )->Void in
      if (error != nil) {
        // Handle the error.
        return
      }
    })

Objective-C:

  • // Get an access token and its lifetime from the storage with your own function.
    NSString *token = [self getStoredToken];
    NSDate *expiresAt = [self getStoredTokenExpiresAt];
    
    NSError *error;
    
    // Authenticate a user with the access token.
    [KiiUser authenticateWithTokenSynchronous:token
                                 andExpiresAt:expiresAt
                                     andError:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • // Get an access token and its lifetime from the storage with your own function.
    NSString *token = [self getStoredToken];
    NSDate *expiresAt = [self getStoredTokenExpiresAt];
    
    // Authenticate a user with the access token.
    [KiiUser authenticateWithToken:token
                      andExpiresAt:expiresAt
                          andBlock:^(KiiUser *user, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    }];

開発者ポータルでの設定

アクセストークンの有効期限のデフォルト値 / 最大値や、リフレッシュトークンの使用有無に関する設定は、開発者ポータルから変更できます。アクセストークンに関するポリシーを設定することになるため、より確実な設定が期待できます。

設定方法は アクセストークンポリシーの設定 を参照してください。

リフレッシュトークンについては アクセストークンのリフレッシュ を参照してください。リフレッシュトークンを使用する場合、アクセストークンの有効期限の設定にはバランスが必要です。有効期限が長すぎると、漏洩した場合に不正アクセスが続くリスクが高くなる一方、短すぎるとリフレッシュトークンをネットワークでやりとりする頻度が増えるため、攻撃に対するリスクが高まります。

対象 API

アクセストークンの有効期限を設定した場合、以下の API からログインした場合に設定が使用されます。

  • パスワードによるログイン

  • ユーザーの新規作成

  • 別サービスアカウントを利用したログイン(ネイティブアプリケーションによる認証)

以下は有効期限の影響を受けません。

  • 保存しておいたアクセストークンの指定によるログイン(初めのアクセストークンの有効期限が使用されます)

  • Kii Cloud SDK での保存情報からのログイン(初めのアクセストークンの有効期限が使用されます)

  • 仮ユーザー機能によるログイン(期限切れにならないよう、常にデフォルト値が使用されます)