すべてのプロダクト
Search
ドキュメントセンター

Identity as a Service:フェデレーション資格情報式の使用

最終更新日:Nov 06, 2025

このトピックでは、IDaaS 組み込み式エンジンで Machine-to-Machine (M2M) フェデレーション資格情報に高度な式を使用する方法について説明します。また、データモデルフィールド、関数、および関連する例についても説明します。

基本的な概念

IDaaS 組み込み式エンジンは、M2M シナリオで高度な式をサポートします。これらの式を使用して、フェデレーション資格情報プロバイダーの信頼条件と、アプリケーションフェデレーション資格情報の検証条件を定義できます。ターゲットアプリケーションが変換、連結、または論理評価を必要とする追加のパラメーターを処理する必要がある場合、式を使用して柔軟な構成を行うことができます。式は、2 つのコアコンポーネントで構成されます。

コンポーネント

名前

説明

モデル

クライアント

クライアントプロパティに関連するデータ。

PKCS#7 フェデレーション資格情報モデル

PKCS#7 フォーマットの資格情報を処理します。

PCA フェデレーション資格情報モデル

PCA フォーマットの資格情報を処理します。

OIDC フェデレーション資格情報モデル

OIDC プロトコルに関連する資格情報を処理します。

関数

/

論理演算を実行するために使用されます。

モデルの説明

1. Client (クライアントモデル)

IDaaS 式では、client.fieldname フォーマットを使用して Client データモデルのプロパティにアクセスできます。次の表に、Client データモデルがサポートするフィールドとその説明を示します。

フィールド名

データ型

説明

clientId

String

アプリケーションの clientId。

applicationFederatedCredentialId

String

アプリケーションフェデレーション資格情報の ID。

activeSubjectUrn

String

applicationFederatedCredential のフィールドマッピングから生成される予約済みプロパティ。呼び出すことはできません。

2. PKCS#7 Federated Credential (PKCS#7 フェデレーション資格情報モデル)

IDaaS PKCS#7 フェデレーション資格情報モデルでは、pkcs7.fieldname フォーマットを使用して次のフィールドにアクセスできます。このデータモデルは、PKCS#7 フェデレーション信頼ソースの信頼に関する条件式と、PKCS#7 フェデレーション資格情報の検証に適用されます。

フィールド名

データ型

説明

payload

object

/

data

String

PKCS#7 から抽出された元のコンテンツ。

jsonData

JSON object

  • コンテンツが JSON フォーマットの場合に取得されるオブジェクト。

  • フェデレーション資格情報信頼ソースが Alibaba Cloud の場合に取得できるフィールド。詳細については、「Alibaba Cloud PKCS#7 で利用可能なフィールド」をご参照ください。

  • これらのフィールドは、フェデレーション資格情報信頼ソースとして Amazon Web Services で利用できます。詳細については、「Amazon Web Services PKCS#7 で利用可能なフィールド」をご参照ください。

signingTime

Long

署名タイムスタンプ (秒単位)。このパラメーターは、フェデレーション ID プロバイダーが Amazon Web Services の場合にのみ返されます。

certificates

List<CertificateObject>

PKCS#7 署名に含まれる証明書チェーン。CertificateObject モデルのフィールドについては、このトピックの最後にある注記をご参照ください。

3. PCA Federated Credential (PCA フェデレーション資格情報モデル)

IDaaS PCA フェデレーション資格情報モデルでは、cert オブジェクトを介して次のフィールドにアクセスできます。たとえば、証明書発行者の Common Name (CN) フィールドを取得するには、`cert.issuer.subject.CN` という式を使用できます。このデータモデルは、PCA フェデレーション信頼ソースの信頼に関する条件式と、PCA フェデレーション資格情報の検証に適用されます。

プロパティ

データ型

説明

serialNumber

String

証明書のシリアル番号 (16 進数フォーマット)。小文字で、コロンは含まれません。最上位ビットが 1 の場合、先行ゼロが追加されます。

例: 6d5a2816af467************f6e974f114a061e

00d******dc305a652

ASN.1 DER エンコーディングルールに従って、証明書のシリアル番号は次の要件に基づいてエンコードする必要があります。

シリアル番号の最上位ビット (左端のバイトの最上位ビット) が 1 の場合、シリアル番号が正の整数として正しくデコードされるように、先行バイト 0x00 を追加する必要があります。

  • 例: 16 進数値 dd0ec2ccc305a652 の最上位ビットは 1 です。したがって、先行する 0x00 を追加する必要があります。最終的なエンコード値は次のようになります。

    00dd0ec2ccc305a652

    16 進数値 6d5a2816af467f40d38be7280f6e974f114a061e の最上位ビットは 0 です。0x00 を追加する必要はありません。エンコードされた値は次のままです。

    6d5a2816af467f40d38be7280f6e974f114a061e

  • 注 (オプション): このルールは、DER エンコーディングにおける INTEGER 型の正しさを保証します。整数の最初のバイトの最上位ビットが 1 の場合、その整数は負になります。有効な正のシリアル番号が負の数として誤って解釈されるのを防ぐために、先行バイト 0x00 が追加され、正の整数として解析されることが保証されます。

issuer

CertificateSubjectObject

証明書の発行者オブジェクト。例: `issuer.CN`、`issuer.C`。

subject

CertificateSubjectObject

証明書オブジェクト。例: `subject.C`、`subject.O`、`subject.OU`。

fingerprint

String

証明書のフィンガープリント (SHA256 フォーマット)。小文字で、コロンは含まれません。

certificateCaIssuerUrl

String

発行者。

subjectKeyIdHex

String

サブジェクト ID。

signatureOid

String

1.2.840.113549.1.1.11 (SHA256withRSA)

notBefore

Long

証明書の有効期間の開始時刻。この値は UNIX タイムスタンプ (秒単位) です。

notAfter

Long

証明書の有効期間の終了時刻。この値は UNIX タイムスタンプ (秒単位) です。

ca

Boolean

証明書が認証局 (CA) 証明書であるかどうかを示します。このフィールドは X.509 v3 証明書の拡張フィールドであり、主要な証明書フィールドではありません。

4. OIDC Federated Credential (OIDC フェデレーション資格情報モデル)

IDaaS OIDC フェデレーション資格情報モデルでは、jwt.fieldname フォーマットを使用して次のフィールドにアクセスできます。このデータモデルは、OIDC フェデレーション信頼ソースの信頼に関する条件式と、OIDC フェデレーション資格情報の検証に適用されます。次の表に、OIDC フェデレーション資格情報モデルの主要なフィールドとその説明を示します。

プロパティ

データ型

説明

iss

String

トークンの発行者。権限付与サーバーの URL を示し、jwt.iss を使用してアクセスできます。

sub

String

トークンのサブジェクト。ユーザーの一意の識別子を示し、jwt.sub を使用してアクセスできます。

aud

List<String>

トークンのオーディエンス。通常はリソースサーバーの識別子またはクライアント ID です。

説明

aud クレームは配列フォーマットをサポートします。aud を検証するには、式を次のように記述する必要があります。

aud フィールドは配列フォーマットをサポートします。aud フィールドを検証するには、式を Equals(jwt.aud[0], "example_aud") のように記述する必要があります。jwt.aud[0] は、aud 配列の最初の要素を比較のために取得することを示します。aud 配列に次のような複数の値が含まれている場合:

{
  "aud": [
    "https://example.com",
    "https://example2.com"
  ]
}

Or( ) 関数を使用して比較できます。これは、少なくとも 1 つの値が等しい場合に検証が成功することを示します。式は次のようになります: Or(Equals(jwt.aud[0], "https://example.com"), Equals(jwt.aud[1], "https://example2.com"))

jti

String

トークンの一意の識別子。再利用を防ぐために使用されます。

exp

Long

有効期限。この値は UNIX タイムスタンプ (秒単位) です。

nbf

Long

有効期間の開始時刻。この値は UNIX タイムスタンプ (秒単位) です。

iat

Long

発行時刻。この値は UNIX タイムスタンプ (秒単位) です。

claims

Map

すべてのプロパティ。

5. CertificateObject モデル

CertificateObject モデルは、証明書関連の検証シナリオを処理し、証明書のさまざまなフィールドへのアクセスを提供します。cert.fieldname フォーマットを使用して、次のフィールドにアクセスできます。このデータモデルは、証明書チェーンの検証、証明書プロパティの検証、証明書の有効期間のチェックなどのシナリオに適用されます。

プロパティ

データ型

説明

serialNumber

String

証明書のシリアル番号 (16 進数フォーマット)。小文字で、コロンは含まれません。

issuer

CertificateSubjectObject

証明書の発行者。例: `issuer.CN`、`issuer.C`。

subject

CertificateSubjectObject

証明書オブジェクト。例: `subject.C`、`subject.O`、`subject.OU`。

fingerprint

String

証明書のフィンガープリント (SHA256 フォーマット)。小文字で、コロンは含まれません。

certificateCaIssuerUrl

String

発行者。

subjectKeyIdHex

String

サブジェクト ID。

signatureOid

String

1.2.840.113549.1.1.11 (SHA256withRSA)。

notBefore

Long

証明書の有効期間の開始時刻。この値は UNIX タイムスタンプ (秒単位) です。

notAfter

Long

証明書の有効期間の終了時刻。この値は UNIX タイムスタンプ (秒単位) です。

ca

Boolean

このフィールドは、証明書が CA に属しているかどうかを示す X.509 v3 拡張フィールドです。値はブール値 (true/false) です。

CertificateSubjectObject モデルのフィールドは次のとおりです。

プロパティ

データ型

説明

country(C)

String

国またはリージョンの名前。通常は 2 文字の ISO コードを使用します (例: 米国は「US」、中国は「CN」)。複数の C 値がサポートされており、スラッシュ (/) で区切られます。

organization(O)

String

組織の名前。会社や機関の正式名称など。複数の O 値がサポートされており、スラッシュ (/) で区切られます。

organizationalUnit(OU)

String

組織内の部門または部署。例:「IT 部門」、「セキュリティチーム」。複数の OU 値がサポートされており、スラッシュ (/) で区切られます (例: IT/fiance/HR)。

commonName(CN)

String

証明書発行者の共通名。通常、特定のサーバーまたは個人を識別するために使用されます。

distinguishedNameQualifier

String

同じ名前のエンティティを区別するために使用されます。

state(ST)

String

州または省。複数の値がサポートされており、スラッシュ (/) で区切られます。

serialNumber

String

組織内の一意の識別子。

locality(L)

String

都市または地域の名前。複数の値がサポートされており、スラッシュ (/) で区切られます。

title(T)

String

役職。例:「マネージャー」。

surname

String

姓または名前。例:「John」または「Doe」。

givenName

String

ユーザーに表示される名前。例:「J. Doe」または「John Doe」。

initials

String

ユーザーに表示される名前のイニシャル。例:「J」または「J.D.」。

pseudonym

String

エイリアス。

generationQualifier

String

世代名。例:「Jr.」(ジュニア) または「III」(3 世)。

domainComponent(DC)

String

ドメイン名コンポーネント。例:「example.com」。複数の値がサポートされており、スラッシュ (/) で区切られます。

oidMap

Map<String,Object>

OID マップオブジェクト。

関数の説明

一般的に使用される関数の詳細については、「関数の説明」をご参照ください。

式の例

上記のデータモデルのいずれかを式で使用するには、JSON セマンティクスに基づいて値を取得する必要があります。JSON キーにピリオド (.)、ハイフン (-)、アンダースコア (_) などの特殊文字が含まれている場合は、キーを単一引用符で囲む必要があります。

フェデレーション信頼ソースの信頼条件

  1. PCA

    // アップロードされた PCA 証明書から発行者の CN フィールドを取得して比較します。
    // たとえば、証明書の発行者は C=cn, ST=sichuan, L=chengdu, O=example, OU=test, CN=test です。
    Equals(cert.issuer.CN, "test")
    
    // 証明書が他の証明書を発行するために使用できる CA 証明書であるかどうかを判断します。
    Equals(cert.ca, true)
    
  2. OIDC

    // Kubernetes クラスターのサービスアカウント OIDC トークンのサブジェクトが正しいかどうかを判断します。
    Equals(jwt.sub, "test")
    
    // 発行者とオーディエンスが同時に正しいかどうかを判断します。
    And(Equals(jwt.iss, "https://example.com"), Equals(jwt.aud, "test_aud"))
  3. PKCS#7

    PKCS#7 フェデレーション信頼ソースを選択した場合、信頼の条件式を入力する必要はありません。

フェデレーション資格情報の検証条件

フェデレーション資格情報検証の条件式を記述する方法は、フェデレーション信頼ソースの信頼の条件式を記述する方法と似ています。データモデルから対応するフィールドを取得して検証できます。IDaaS は、構成プロセスを簡素化するために基本的な検証式を自動的に生成するクイック構成モードを提供します。

  1. PCA

    // 検証条件モードが [証明書モード] で、共通名 (CN) が example の場合、生成される式は次のようになります:
    Equals(cert.subject.CN, "example")
    
    // 他の条件を検証する式をカスタマイズするには、[クライアント証明書フィールド式検証モード] を選択します。
    // たとえば、クライアント証明書の発行者の国、場所、および州を検証する場合。
    // たとえば、証明書の発行者は C=cn, ST=sichuan, L=chengdu, O=example, OU=test, CN=test です。
    And(Equals(cert.issuer.C, "cn"), Equals(cert.issuer.L, "chengdu"), Equals(cert.issuer.ST, "sichuan"))
    
    // 証明書のシリアル番号を決定します。注: シリアル番号は 16 進数フォーマットで、小文字であり、コロンは含まれません。関数を使用して変換できます。
    // たとえば、証明書のシリアル番号が 6d:5a:28:16:af:46:7f:40:d3:8b:e7:28:0f:6e:97:4f:11:4a:06:1e の場合、StringReplace() 関数を使用してコロンを削除します。式は次のようになります:
    // StringReplace("元の文字列","置き換えられる文字","置き換え文字")
    Equals(cert.serialNumber, StringReplace("6d:5a:28:16:af:46:7f:40:d3:8b:e7:28:0f:6e:97:4f:11:4a:06:1e",":",""))
    
    // シリアル番号が大文字の場合 (例: 6D:5A:28:16:AF:46:7F:40:D3:8B:E7:28:0F:6E:97:4F:11:4A:06:1E)
    // ToLower() 関数を使用して文字列を小文字に変換し、次に StringReplace() 関数を使用してコロンを削除します。
    Equals(cert.serialNumber, StringReplace(ToLower("6D:5A:28:16:AF:46:7F:40:D3:8B:E7:28:0F:6E:97:4F:11:4A:06:1E"),":",""))
  2. OIDC

    // [Kubernetes モード] が使用され、名前空間が test で、サービスアカウントが test の場合。
    // 自動的に生成される式は次のようになります:
    And(Equals(jwt.claims.'kubernetes.io'.namespace, "test"), Equals(jwt.claims.'kubernetes.io'.serviceaccount.name, "test"), Equals(jwt.sub, "system:serviceaccount:test:test"))
    
    // [サブジェクト ID モード] が使用され、サブジェクト ID が https://sub.example.com の場合。
    // 自動的に生成される式は次のようになります:
    Equals(jwt.sub, "https://sub.example.com")
    
    // 他の条件を検証する式をカスタマイズするには、[クレームフィールド式検証モード] を選択します。
    // たとえば、現在の OIDC トークンの jti フィールドを検証する場合、式は次のようになります:
    Equals(jwt.jti, "test_XXX")
    
    // ユーザーが OIDC トークンのクレームに customValue という名前のカスタムフィールドを定義し、このフィールドを検証したい場合、式は次のようになります:
    Equals(jwt.claims.customValue, "XXX")
    
    // aud が正しいかどうかを判断するには、aud が配列フォーマットであるため、配列インデックスを使用して対応する aud 値を取得して比較する必要があります。
    // フェデレーション資格情報の検証条件で検証するのではなく、OIDC フェデレーション信頼ソースの aud フィールドを検証することをお勧めします。
    // aud に値が 1 つしかない場合、式は次のようになります:
    Equals(jwt.aud[0], "example_aud")
    // aud に複数の値がある場合、Or() 関数を使用して比較できます。これは、少なくとも 1 つの aud 値が一致すれば検証に合格することを示します。式は次のようになります:
    Or(Equals(jwt.aud[0], "https://example.com"), Equals(jwt.aud[1], "https://example2.com"))
  3. PKCS#7

    // 現在のフェデレーション信頼ソースが Alibaba Cloud PKCS#7 で、検証条件モードが [ECS インスタンス指定モード] であり、ECS インスタンス ID が i-123 および i-456 の場合、生成される式は次のようになります:
    Or(Equals(pkcs7.payload.jsonData.'instance-id', "i-123"),Equals(pkcs7.payload.jsonData.'instance-id', "i-456"))
    
    // フェデレーション信頼ソースが AWS PKCS#7 で、検証条件モードが [ECS インスタンス指定モード] であり、ECS インスタンス ID が i-123 および i-456 の場合、生成される式は次のようになります:
    Or(Equals(pkcs7.payload.jsonData.instanceId, "i-123"),Equals(pkcs7.payload.jsonData.instanceId, "i-456"))
    
    // 他の条件を検証する式をカスタマイズするには、[署名値式検証モード] を選択します。
    // たとえば、Alibaba Cloud PKCS#7 の署名値の region-id フィールドを検証する場合、式は次のようになります:
    Equals(pkcs7.payload.jsonData.'region-id', "cn-hangzhou")

付録

Alibaba Cloud PKCS#7 で利用可能なフィールド

プロパティ

タイプ

説明

instance-id

String

ECS インスタンス ID。

region-id

String

リージョン ID。

owner-account-id

String

Alibaba Cloud アカウント ID。

audience

object

/

aud

String

ユーザーが Alibaba Cloud PKCS#7 署名を取得する際のカスタム入力パラメーター。このパラメーターは、idaas_XXX などの IDaaS インスタンス ID のみをサポートします。

signingTime

Long

署名時刻。この値は UNIX タイムスタンプ (秒単位) です。このフィールドは、現在の PKCS#7 の署名時刻を検証するために使用されます。

Amazon Web Services PKCS7 で利用可能なフィールド

プロパティ

タイプ

説明

instanceId

String

EC2 インスタンス ID。

region

String

リージョン ID。

accountId

String

AWS アカウント ID。

リファレンス