1. Cloud development

認証

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

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

Content HubでOAuthを設定する

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

  1. メニューバーで 「管理 」をクリックします。
  2. 管理ページで、OAuthクライアントをクリックしてください。
  3. クリック OAuth クライアント
  4. OAuthクライアントダイアログで、以下のプロパティを入力します:
    • 名称
    • クライアントID
    • クライアントの秘密
    • リダイレクトURL(リダイレクトURL)
  5. クライアントタイプドロップダウンリストから「クライアント認証情報」をクリックします。
  6. ユーザーフィールドで「Add 」をクリックし、ユーザーダイアログでユーザーを選択し、「保存」をクリックします。
  7. OAuthクライアントのダイアログで「保存」をクリックします。

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

パスワード認証

ClientIdとClientSecretに加えて、ユーザー名とパスワードを指定してプロジェクトのContent Hubで認証します。これらの値はIWebMClientインスタンスを構築するために必要なものです。以下はContent Hub認証の例です。

using System; using Stylelabs.M.Sdk.WebClient; using Stylelabs.M.Sdk.WebClient.Authentication;

namespace Stylelabs.M.WebSdk.Examples { public class Program { static void Main(string args) { // Your Sitecore Content Hub endpoint to connect to Uri endpoint = new Uri("https://your.m.endpoint.com");

// Enter your credentials here OAuthPasswordGrant oauth = new OAuthPasswordGrant { ClientId = "client_id", ClientSecret = "client_secret", UserName = "username", Password = "password" };

// Create the Web SDK client IWebMClient MClient = MClientFactory.CreateMClient(endpoint, oauth); } } }

クライアント認証

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

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

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

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

OAuthClientCredentialsGrant oauth = new OAuthClientCredentialsGrant { ClientId = "client_id", ClientSecret = "client_secret" };

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

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

!注リフレッシュトークンを取得するには、REST APIドキュメントをご覧ください。

// Enter your credentials here OAuthRefreshTokenGrant oauth = new OAuthRefreshTokenGrant { ClientId = "client_id", ClientSecret = "client_secret", RefreshToken = "SFGDXCbHujaXXMo_Yv2Rf5VUXR2M5GFQBCf4GnxqXIEU9wC0U4M44qHBQ8QO5I-XMlzwb2oUBue_sPsuohUqrGchf_Pfx3jRw7J2xHlxTSRZFRtVLXGQvxE_ZUyj3zIzcM56Lz8NYBzveEd7UjSEBn47RcHnbUC96u30MFrXpHphOmwAfnyENnXgaNmT6Dz1H7_YbuGF_kCGZsFXoT-Fm1NKYoZLn3N4zbB0v-I3Aof16c0_q_FsfVfnOLoviGDKwsrFAHPPLfY6PCj8dSE4vA" };

リフレッシュトークンが変更されると、古いトークンは無効になります。最新のリフレッシュトークンを常に管理してください。

構成のテスト

認証クライアントを作成した後、TestConnectionAsyncを呼び出して設定をテストできます。これにより、失敗の原因(もしあれば)を説明する例外が出されます。

await MClient.TestConnectionAsync();

このメソッドは以下の要素をチェックします:

  • サーバーが稼働しているかどうか
  • クライアントがサーバーに正常に接続できるかどうか
  • SDKとサーバーがバージョン互換性があるかどうか
  • 資格が正しいかどうか

コンソールアプリケーションのデフォルトMainはC# 7.1以前は非同期操作をサポートしていませんでした。C#バージョンが7.0未満の場合は**、を追加します。wait()(****voidを返す際)またはメソッド**呼び出しの結果を選び、awaitキーワードを削除してください。例えば:

MClient.TestConnectionAsync().Wait();

それ以外の場合は、非同期をサポートするために署名を以下に変更してください:

static async Task Main(string args)

!注テスト接続方法の詳細については、APIリファレンスを参照してください。

この記事を改善するための提案がある場合は、 お知らせください!