Composer での ThingWorx モデルの定義 > セキュリティ > 認証システム > ログイン認証システム > 認証システムの拡張機能コンフィギュレーションの例
認証システムの拡張機能コンフィギュレーションの例
以下の手順を使用して、ビルドを行い、拡張機能マニフェストを作成し、認証システム拡張機能のコールバックメソッドに認証方法アルゴリズムを実装します。ThingWorx でのカスタム拡張機能の作成について詳しくは、 ThingWorx の拡張性を参照してください。
ビルド
Ant や Gradle などのビルドツールを使用できます。ビルドスクリプトでは、認証システムメソッドのコールバック (後述) を実装する Java クラスをコンパイルする必要があります。コンパイルに使用する Thingworx-Extension-SDK-x.x.x ライブラリ (JAR ファイル) が、ランタイムで使用する Thingworx-Platform-x.x.x のバージョンと互換性があることを確認してください。また、拡張機能の ZIP をインポートする際に、認証システム拡張機能を ThingWorx に登録するために使用される metadata.xml ファイルも必ず組み込んでください。
マニフェストの作成
1. configfiles/metadata.xml を開きます。
2. Authenticators 集合エレメント (以下に例を示す) 内で、必要に応じて以下のパラメータを設定します:
<Entities>
<ExtensionPackages>
<ExtensionPackage name="Authenticators_Sample_BasicUser_ExtensionPackage"
description="Authenticators Sample BasicUser Extension Package"
vendor="ThingWorx"
packageVersion="1.0"
minimumThingWorxVersion="5.1.1">
<JarResources>
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar" description="Authenticators Sample BasicUser JAR file." />
</JarResources>
</ExtensionPackage>
</ExtensionPackages>
<Authenticators>
<Authenticator name="SampleBasicUserAuthenticator"
className="com.thingworx.security.authentication.samples.SampleBasicUserAuthenticator"
description="Sample Authenticator that validates against the Thingworx User"
aspect.isEditableExtensionObject="true">
</Authenticator>
</Authenticators>
</Entities>
a. Authenticator name - Composer に表示されます。一意の名前でなければなりません。
b. className - 認証システムの実装インスタンスをインスタンス化するために ThingWorx によって使用される実装のクラス名。
c. description - Composer に表示されます。
d. aspect.isEditableExtensionObject - 有効な優先順位の設定を Composer に保存することを許可するには、true に設定します。これは必須です。
3. FileResource タイプの jar ファイル名 (下記参照) を設定します:
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. ファイルを保存して閉じます。
実装
実装するには、該当する認証システム JAR ファイルに対して以下の手順を行います。
1. CustomAuthenticator クラスから取得/拡張します。
* 
SupportsSession パラメータは、リクエスト間セッションのサポートを有効にし、デフォルトで true に設定されます。リクエスト間セッションのサポートを希望しない場合は、false に設定します。
2. デフォルトのコンストラクタを実装します。
3. 実装環境の必要に応じて、以下に示す認証システムタイプのメソッドをオーバーライドします。
メソッド
説明
public boolean matchesAuthRequest(HttpServletRequest httpRequest)
throws AuthenticatorException,
httpRequest パラメータとして提供されて受け取る認証リクエストから情報を取得できます。要求を処理できることを指定するには true、そうでない場合は false を返します。戻り値が true の場合、ThingWorx ランタイムは認証メソッド (下記参照) を呼び出します。

//… make SSO call or other algorithm to determine userName
public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
{
// use validateThingworxUser to make sure the user is enabled and a Thingworx user
AuthenticationUtilities.validateThingworxUser(userName);
// Call setCredentials, so the Thingworx platform can provide the correct permissions and access to allowed content
this.setCredentials(userName);
}

// … or if not using SSO, but providing username and password
public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
{
AuthenticationUtilities.validateCredentials(user, password);
this.setCredentials(user, password);
}
ユーザー名のみを指定する認証方法 (ユーザー認証が別のアプリケーションで行われる SSO など) を使用する場合は、左の列に示すように、1 つ目の "validate" と "setCredentials" のセットを使用します。
ユーザー名とパスワードを指定する認証方法の場合は、左の列に示すように、2 つ目の "validate" と "setCredentials" のセットを使用します。
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
throws AuthenticatorException
このメソッドは、常に必要とは限りません。ただし、Authenticate メソッドから例外がスローされる場合、または RequiresChallenge フラグを true に設定する場合は、issueAuthenticationchallenge メソッドが呼び出されます。
デフォルト認証システムの優先度設定
システム認証システムには、以下のデフォルト優先度が設定されています。このように範囲が分散されていることにより、必要な場合に認証システム拡張機能を中間の処理チェーンに挿入できます。これらのシステムオブジェクト認証システムの順序や優先度を変更したり、認証システムを削除したり、変更したりすることはどのような方法でもできません。
ThingworxBasicAuthenticator - 優先度 100。指定されたユーザー名とパスワードを認証します。
ThingworxMobileTokenAuthenticator- 優先度 150。ThingWorx モバイルトークンを検証する Mobile App Builder 認証システム。
* 
この認証システムは将来のリリースを対象としており、現在は無効になっています。
ThingworxApplicationKeyAuthenticator - 優先度 200。指定されたアプリケーションキーを認証します。
ThingworxFormAuthenticator - 優先度 300。フォームログインを使用して認証します。
ThingworxMobileAuthorizationAuthenticator - 優先度 350。ThingWorx のユーザー/パスワードを検証する Mobile App Builder 認証システム。
* 
この認証システムは将来のリリースを対象としており、現在は無効になっています。
ThingworxHttpBasicAuthenticator - 優先度 400。基本 HTTP 認証。
Composer でのカスタム認証システムの展開
1. Composer で「インポート/エクスポート」 > 「インポート」の順にクリックします。
2. <ご自身の認証システム拡張の Zip 名>.zip を見つけます。
3. 拡張機能をインストールします。
4. エクスプローラで、「認証システム」をクリックします。
5. 該当する認証システムを開きます。
6. 「一般情報」で、「有効」をクリックします。
* 
デフォルトでは、すべての認証システムが無効になっています。
7. 「保存」をクリックします。
ランタイムにおける認証システム
認証システム拡張機能には、ランタイムでアクセスできます。一般には、最も小さい値が先に処理されます。ただし、同じ優先度の値を指定した認証システムが 2 つ存在し、両方が matchAuthenticationRequest コールバックに true と応答する場合は、順序が確定的でなくなる影響により、ランタイムで認証システムのリクエスト処理が不確定になります。この理由から、リクエスト処理順序が確定するように、2 つのカスタム認証システムの優先度値が同じにならないようにすることをお勧めします。認証システムがリクエストの処理に失敗すると、チェーン内の次の認証システムにリクエストを処理する機会が与えられ、有効な認証が行われるまで同様に処理が進められます。カスタム認証システムがリクエストを処理できない場合は、ThingWorx システム認証システムがリクエストを処理し、場合によってはユーザー名とパスワードを求めるフォームログインを表示します。
ランタイムにおける認証システムへのアクセス
ランタイムで認証システムにアクセスするには、以下の URL のリクエストを行い、照会パラメータ、ヘッダーパラメータ、またはメッセージ本体を指定します。これらは、前述の 3 つのカスタム認証システムコールバックメソッドの実行中に、転送された httpRequest オブジェクトからカスタム認証システムによって読み込まれて処理できます。
サーバー:ポート/Thingworx/Home
<ホスト:ポート>/Thingworx/Home?YourParameter=something
関連リンク