---
title: "認証"
slug: "authentication-1523437"
abstract: "OAuth認証、パスワード認証、クライアント認証認証、トークン認証の更新方法の概要。"
---
# 認証

Sitecore Content HubはセキュリティのためにOAuth 2.0認証フレームワークを使用しています。 OAuthはアクセス委任のためのオープンスタンダードであり、インターネットユーザーが他のサイトやアプリケーションに自分の情報へのアクセスを許可する手段として一般的に使われていますが、これらのウェブサイトやアプリにはパスワードを付与しません。OAuth 2.0は、ウェブアプリケーション、デスクトップアプリケーション、携帯電話、スマートデバイス向けの認可フローを提供します。

> !注[外部コンポーネント](https://doc.sitecore.com/ch/en/users/content-hub/external.html) は、HTTPリクエストをSitecore Content Hubに送信するために事前認証済みのContent Hub JavaScript SDKクライアントにアクセスできます。SDKは一般的な操作用の専用クライアントと、カスタムリクエスト用の [生クライアント](https://doc.sitecore.com/ch/ja/developers/cloud-dev/raw-client-1523471.html "Raw client") を提供します。サードパーティサーバーへのリクエストには、[Fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)などの標準的なブラウザAPIを使用できます。

## Content HubでOAuthを設定する

プロジェクトとの接続を設定するには、Content HubにM.OAuthClientエンティティを作成します。

> !注RedirectUrl属性は必須ですが、この場合は関係ありません。どんな価値でも提供可能です。

Content HubでOAuthを設定するには:

1.  メニューバーで **「管理** :mdiCogOutline:」をクリックします。
2.  **管理**ページで、**OAuthクライアント**をクリックしてください。
3.  SDKの M.OAuthClient エンティティがリストにない場合は、:mdiPlus: **OAuth Client** をクリックして新しいクライアントを追加してください。
4.  **Oauthクライアント**のダイアログで、必要なM.OAuthClientの事業体値を入力してください。
    -   **名称**
    -   **クライアントID**
    -   **クライアントの秘密**
    -   **リダイレクトURL(リダイレクトURL)**
5.  **クライアントタイプ**ドロップダウンリストから「**クライアント認証情報**」をクリックします。
6.  **ユーザー**フィールドで「**Add** :mdiPlus: 」をクリックし、**ユーザー**ダイアログで[ユーザーを選択し](https://doc.sitecore.com/ch/ja/developers/cloud-dev/authentication-1523437.html#UUID-696ca5f2-159c-d8f4-93c7-c2954dc50869_section-idm273425541647300 "Client credentials authentication")、「**保存**」をクリックします。
7.  **OAuthクライアント**のダイアログで「**保存**」をクリックします。

> !ヒントOAuthクライアントを編集するには、編集したいクライアントの横に「 **Quick Edit** :mdiPencil:」をクリックしてください。クライアントを削除するには「 **Delete** :mdiDelete:」をクリックしてください。

## パスワード認証

ClientIdとClientSecretに加えて、ユーザー名とパスワードを指定してプロジェクト内のContent Hubで認証します。以下はContent Hub認証の例です:

import OAuthPasswordGrant from "@sitecore/sc-contenthub-webclient-sdk/dist/authentication/oauth-password-grant";
import { ContentHubClient } from "@sitecore/sc-contenthub-webclient-sdk/dist/clients/content-hub-client";

// Your Sitecore Content Hub endpoint to connect to
const endpoint = "https://your.m.endpoint.com";

// Enter your credentials here
const oauth = new OAuthPasswordGrant(
 "client\_id",
 "client\_secret",
 "username",
 "password"
);

// Create the JavaScript SDK client
const client = new ContentHubClient(endpoint, oauth);

// Authentication
// returns true when authentication succeeds.
// returns false or throws an error when authentication failed.

await client.internalClient.authenticateAsync();

認証が成功した場合はawait client.internalClient.authenticateAsync()TRUEを返し、失敗した場合はFALSEを返すかエラーを投げます。

await式は関数の一部としても次のように書くことができます。

async function main() {
 await ...
}
main();

awaitを使用する場合は、Promise構造者の宣言を含めるか、\--libオプションにES2015を含めることを忘れないでください。

// configuration using tsconfig.json
{
 "compilerOptions": {
 "lib": 
 "es2015"
 
 }
}

または、以下のコードを使用してください:

tsc main.ts --lib ES2015

## クライアント認証

> !重要クライアントはクライアント **タイプ** をクライアント **認証**情報に設定して作成しなければなりません。

Content HubでOAuthを設定すると、**Users**フィールドで複数のユーザーを定義できますが、認証の目的では最初のユーザーのみが使用されます。つまり、すべての操作はそのユーザーのコンテキスト内で実行されます。

> !tipOAuthクライアントで使用する専用のサービスユーザーアカウントを作成することもでき、サービスが個々のユーザーアカウントにリンクしないようにします。

以下のコードはクライアント認証の例を示しています:

import OAuthClientCredentialsGrant from "@sitecore/sc-contenthub-webclient-sdk/dist/authentication/oauth-client-credentials-grant";
const oauth = new OAuthClientCredentialsGrant("client\_id", "client\_secret");

## リフレッシュトークン認証

リフレッシュトークン認証は、ユーザー名とパスワード認証の代わりに使用できます。リフレッシュトークン認証では、IWebMClient.RefreshTokenReceivedイベントにサブスクライブすることが重要です。 OAuthPasswordGrantを作成する代わりに、これをOAuthRefreshTokenGrantに変更してください。

import OAuthRefreshTokenGrant from "@sitecore/sc-contenthub-webclient-sdk/dist/authentication/oauth-refreshtoken-grant";

// Enter your credentials here
const oauth = new OAuthRefreshTokenGrant(
 "client\_id",
 "client\_secret",
 "refresh\_token",
);