ユーザーアクセストークン

ガイド認証JWT認証ユーザーアクセストークン

ユーザーアクセストークン

アプリケーションのサービスアカウントではなく特定のユーザーにアクセストークンを作成することで、JWTアプリケーションは別のユーザーの代理になることができます。

この場合、ユーザーIDはユーザーのBox識別子です。どのユーザーでも、ユーザーIDは、管理者だけが利用可能なGET /usersエンドポイントを介して確認できます。また、認証済みのユーザーセッションでGET /users/meエンドポイントを呼び出して確認することもできます。

前提条件

ユーザーアクセストークンを作成するには、いくつかの要件があります。最初に、開発者コンソールでユーザーアクセストークンを作成できるようアプリケーションを構成する必要があります。

高度な機能

さらに、認証済みユーザーは、管理者権限を持つユーザー、つまり、管理者、共同管理者、またはサービスアカウントのいずれかである必要があります。詳細については、ユーザータイプのガイドを参照してください。

SDKを使用したユーザーアクセストークン

JWTアプリのサービスアカウントではなく特定のユーザーとして認証するBox SDKクライアントを作成するには、SDKを使用したJWTのガイドで説明されているのと同じ手順に従います。ただし、「エンタープライズ」クライアントではなく、ユーザークライアントを作成します。

.Net
var userId = "12345";
var sdk = new BoxJWTAuth(config);
var token = sdk.UserToken(appUserID);
BoxClient client = boxJWT.UserClient(userToken, userId);
Java
String userId = "12345";
BoxDeveloperEditionAPIConnection api = new BoxDeveloperEditionAPIConnection.getAppUserConnection(userId, config)
Python
user = client.user(user_id='12345')

auth = JWTAuth(
    client_id='[CLIENT_ID]',
    client_secret='[CLIENT_SECRET]',
    user=app_user,
    jwt_key_id='[JWT_KEY_ID]',
    rsa_private_key_file_sys_path='[CERT.PEM]',
    rsa_private_key_passphrase='[PASSPHRASE]'
)
auth.authenticate_user()
user_client = Client(auth)
Node
var sdk = BoxSDK.getPreconfiguredInstance(config);
var client = sdk.getAppAuthClient('user', '12345');

JWTでのBox SDKの使用の詳細を確認する

SDKを使用しないユーザーアクセストークン

JWTアプリのサービスアカウントではなく特定のユーザーとして認証するユーザーアクセストークンを作成するには、SDKを使用しないJWTのガイドで説明されているのと同じ手順に従います。ただし、クレームは、会社ではなく特定のユーザーIDに対して作成します。

.Net
var userId = "12345";

var claims = new List<Claim>{
  new Claim("sub", userid),
  new Claim("box_sub_type", "user"),
  new Claim("jti", jti),
};
Java
String userId = "12345";

JwtClaims claims = new JwtClaims();
claims.setIssuer(config.boxAppSettings.clientID);
claims.setAudience(authenticationUrl);
claims.setSubject(userId);
claims.setClaim("box_sub_type", "user");
claims.setGeneratedJwtId(64);
claims.setExpirationTimeMinutesInTheFuture(0.75f);
Python
user_id = '12345';

claims = {
  'iss': config['boxAppSettings']['clientID'],
  'sub': user_id,
  'box_sub_type': 'user',
  'aud': authentication_url,
  'jti': secrets.token_hex(64),
  'exp': round(time.time()) + 45
}
Node
let user_id = '12345';

let claims = {
  iss: config.boxAppSettings.clientID,
  sub: user_id,
  box_sub_type: "user",
  aud: authenticationUrl,
  jti: crypto.randomBytes(64).toString("hex"),
  exp: Math.floor(Date.now() / 1000) + 45
};
Ruby
user_id = '12345'

claims = {
  iss: config['boxAppSettings']['clientID'],
  sub: user_id,
  box_sub_type: 'user',
  aud: authentication_url,
  jti: SecureRandom.hex(64),
  exp: Time.now.to_i + 45
}
PHP
$userId = '12345';

$claims = [
  'iss' => $config->boxAppSettings->clientID,
  'sub' => $userId,
  'box_sub_type' => 'user',
  'aud' => $authenticationUrl,
  'jti' => base64_encode(random_bytes(64)),
  'exp' => time() + 45,
  'kid' => $config->boxAppSettings->appAuth->publicKeyID
];

手動によるJWT認証の使用の詳細を確認する