idp
概要
SAML は、セキュリティ情報の交換を円滑に進める標準です。SAML は OASIS(Organization for the Advancement of Structured Information Standards)によって開発されたもので、XML ベースのフレームワークです。SAML を使用すると、(様々なセキュリティドメインを使用している)様々な組織が認証および承認情報を安全に交換できます。
SAML の推進要因
シングルサインオン:Web アプリケーションでは、ブラウザーの Cookie を利用してユーザー認証の状態を保持するので、システムにアクセスするときにユーザーは再度認証する必要があります。ただし、ブラウザーの Cookie は DNS ドメイン間で転送されないので、一方のドメインの Cookie に含まれる情報は、もう一方のドメインでは使用できません。そのため、Web アプリケーションでは、ドメイン間で認証情報を受け渡すためにシングルサインオン(SSO)をサポートしています。
Federated ID:Federated ID 管理(FIM)は、サブスクライバーが同じ ID データを使用してすべての企業データにアクセスできるように複数の企業間で締結される契約です。ID フェデレーションでは、それぞれ独自の ID 管理システムをサポートしている複数のセキュリティドメインにユーザーの ID をリンクします。2つのドメインのフェデレーションが設定されると、ユーザーは一方のドメインへの認証をおこなった後、別個にログイン手続きをおこなわなくても、もう一方のドメインのリソースにアクセスすることができます。
SAML パッケージのインストール
SAML 機能を使用する前に、ColdFusion パッケージマネージャーを実行して、SAML モジュールがインストールされていることを確認してください。
<instance_home>/bin に移動し、cfpm.bat または cfpm.sh を実行します。
「install saml」と入力して、SAML パッケージをインストールします。
SAML メタデータ交換
SAML ワークフローを実行するには、サービスプロバイダーと ID プロバイダーの間でのメタデータ交換ステップが前もって必要です。このステップにより、共通の規約に合意することで両者が互いに相手を信頼できるようになります。交換の結果、互いのエンドポイント、証明書、バインディングサポーがわかります。このステップがなければ、SSO および SLO ワークフローはまったく機能しません。
サービスプロバイダーの設定
SAML サービスプロバイダーは、SAML(Security Assertion Markup Language)のシングルサインオン(SSO)プロファイルと共に認証アサーションを受け取って承認するシステムエンティティです。SAML ドメインモデルでは、SAML 証明書利用者は、別のシステムエンティティから情報を受け取って承認する任意のシステムエンティティです。
ColdFusion では、すべての SAML 2.0 メタデータがサポートされています。
SSO シナリオには 3 つのエンティティが関与します。
- プリンシパル - 通常はアプリケーションに何らかのサービスを要求するユーザーのことです。
- サービスプロバイダー - ユーザーに 1 つまたは複数のサービスを提供する任意のアプリケーション(Web/ColdFusion)ですが、これらのサービスを利用できるためにはまず認証が必要です。
- ID プロバイダー - 信頼の手段として機能します。ユーザーは、ID プロバイダーに対して認証されます。サービスプロバイダーは、ID プロバイダーに問い合わせて、ユーザーの認証と承認の状態を把握します。
サービスプロバイダー(SP)を追加するには、ColdFusion Administrator で、セキュリティ/SP 設定に移動します。
フィールド | 説明 |
---|---|
名前 | 指定するサービスプロバイダー設定の名前。 |
説明 | SP の説明。 |
エンティティ ID | SP の一意識別子。SP の各インスタンスには、異なるエンティティ ID が必要です。 |
ACS(アサーションコンシューマーサービス)URL | SAML アサーションが送信される場所。これは、多くの場合、アプリケーションの SAML ACS URL と呼ばれます。 |
ACS バインディング | SAML 応答は、ID プロバイダーで指定された設定に従って準備され、Base 64 文字列にエンコードされて、この設定に基づいてリクエストに読み込まれます。HTTP リダイレクトバインディングでは、Base64 でエンコードされた文字列が URL に挿入されますが、HTTP-POST バインディングでは、Base64 でエンコードされた文字列が非表示の FORM 要素として挿入されます。 「REDIRECT」と「POST」のどちらかの値を取ります。 |
SLO URL | ログアウト応答を送信する必要がある場所。 |
SLO バインディング | SP と IDP の間で様々なプロトコルメッセージを交換する方法を定義します。「リダイレクト」/「POST」の値を取得します。 |
リクエストに署名 | SP へのリクエストが秘密鍵で署名されるようにします。 |
署名済みアサーションが必要 | IDP からのアサーション応答への署名が SP に必要かどうかを指定します。 |
ログアウト応答に署名 | SP から送信されるログアウト応答が署名されるようにします。 |
署名キーストアのパス | 秘密/公開鍵ペアを使用して作成したキーストアのパス |
署名キーストアのパスワード | キーストアのパスワード。 |
署名キーストアのエイリアス | キーストア内のエントリのエイリアス。 |
リクエストストア | リクエストストアを使用すると、送信リクエストと受信応答を ID プロバイダーで照合して再生攻撃を防止できます。
ColdFusion では、反射攻撃への対処に EHCache を使用してきましたが、すべてのインスタンスの XML を編集する必要がある場合は、クラスターでの作業が困難になります。 第 2 のオプションはキャッシュです。キャッシュモジュールをインストールした後は、ColdFusion Administrator でサーバーレベルのキャッシュを指定することができます。Application.cfc と同様に、キャッシュ設定を指定できます。キャッシュオプションが選択されている場合は、そのキャッシュ設定を使用して保存します。 最後のオプションは Redis です。ColdFusion Admin で Redis セッションストレージを設定してある場合は、その設定が使用されます。Redis が使用されるのは、すべてのインスタンスが 1 つの Redis を指しているので、クラスターシナリオが簡単になるからです。 「リクエストストア」オプションは、Admin ページで設定するか、SP を追加する際に Application.cfc でプロパティ "REQUESTSTORE" を指定して設定できます。これは「Cache」と「Redis」のどちらかの値を取ります。 次に例を示します。 this.security.samlsettings.sp = [{ name: 'sp1', entityId: 'admin1', acsURL: 'http://localhost:89/App1/response.cfm', sloURL: 'http://localhost:89/App1/logout.cfm', ACSBINDING: 'post', SLOBINDING: 'post', SIGNREQUESTS: true, WANTASSERTIONSSIGNED: true, LOGOUTRESPONSESIGNED: true, SIGNKEYSTOREPATH: 'C:/okta.p12', SIGNKEYSTOREPASSWORD: 'abcdef', SIGNKEYSTOREALIAS: 'selfsigned', REQUESTSTORE: 'Redis' }]; |
ID プロバイダーの設定
SAML サービスプロバイダーは、ID プロバイダーの詳細を把握している必要があります。これは、ユーザーからの入力として取得するか、未処理の xml ファイルから読み込むことができます。IDP メタデータには、サービスプロバイダーからのメッセージに対して ID プロバイダーが想定している形式が記述されています。一部の IDP は設定可能で柔軟性が高く、複数のバインディング/設定をサポートしています。ただし、場合によっては、限られた実装しかないものがあり、その場合は、従うべき形式をこのメタデータでサービスプロバイダーに正確に伝えることになります。
ID プロバイダーを追加するには、ColdFusion Administrator で、セキュリティ/IDP 設定に移動します。
フィールド | 説明 |
名前 |
作成する ID プロバイダーの名前を指定します。 |
説明 |
ID プロバイダーの説明です。 |
エンティティ ID |
IDP の一意識別可能な識別子です。IDP の各インスタンスには、異なるエンティティ ID が必要です。 |
SSO URL |
IDP の SSO サービスを指す URL。 |
SLO URL |
IDP の SSO ログアウトサービスを指す URL。 |
SSO バインディング |
以下の説明のとおり、「REDIRECT」と「POST」のどちらかの値を取ります。 |
SLO バインディング |
以下の説明のとおり、「REDIRECT」と「POST」のどちらかの値を取ります。 |
POST バインディング |
SAML リクエストは準備され、Base 64 文字列にエンコードされて、フォーム入力フィールドの 1 つとして HTML フォームに読み込まれます。「Template」パラメーターを使用したフォームを含むテンプレートパスを指定するには、「template」パラメーターを使用します。関数 InitSAMLAuthRequest/InitSAMLLogoutRequest 例えば、cfinstance/wwwroot/WEB-INF/saml/login.cfm を参照します。 |
リダイレクトバインディング |
SAML リクエストは準備され、Base 64 文字列にエンコードされて、クエリパラメーターとして URL に読み込まれます。 |
リクエストに署名 |
リクエストへの署名が必要な場合は、このオプションを有効にします。 |
リクエストを暗号化 |
リクエストの暗号化が必要な場合は、このオプションを有効にします。 |
証明書に署名し証明書を暗号化 |
keytool などで独自の証明書を作成して、ColdFusion Administrator にアップロードします。 |
ID プロバイダー設定の読み込み
SAML メタデータは、次のいずれかの方法で読み込むことができます。
- SAML URL からインポート
- 既存の SAML 定義からインポート
- ローカル システムの XML ファイルからインポート
- 独自の SAML 定義を作成
SSO リクエスト
これで IDP と SP の両方が設定されたので、SSO ワークフローを開始できます。InitSAMLAuthRequest 関数を呼び出します。
<cfset config = {
idp = {name = “testidp”},
sp = {name = “testsp”},
relayState = “cart”
}>
<cfset InitSAMLAuthRequest(config)>
認証が完了すると、IDP は一連のアサーションを応答します。この中には、ID と指定ユーザーに設定された可能性がある役割または許可が含まれています。これらは、ProcessSAMLResponse 関数を使用して、次のように抽出できます。
<cfset response = ProcessSAMLResponse(“testidp”,”testsp”)>
<cfdump var = “#response#”>
SLO リクエスト
シングルログアウトリクエストは、SSO リクエストと似ています。sessionindex、nameId、nameIdFormat など、ログイン時に受け取った詳細情報を指定して、InitSAMLLogoutRequest 関数を呼び出します。
これらは IDP に依存しています。IDP には、nameIdQualifier フィールドと spNameIdQualifier フィールドも必要なことがあります。
<cfset config = {
idp = {name = “testidp”},
sp = {name = “testsp”},
sessionindex = “#response.SESSIONINDEX#”,
nameId = “#response.NAMEID#”,
nameIdFormat = “#response.NAMEIDFORMAT#”
}>
<cfset InitSAMLLogoutRequest(config)>
IDP にリダイレクトされ、そこで、ログアウトリクエストの処理がお試みされます。IDP から返される応答には、IDP でのログアウトが成功したかどうかを示すブール値が含まれています。これは、同じ ProcessSAMLResponse 関数を使用して抽出できます。
<cfset response = ProcessSAMLResponse(“testidp”,”testsp”)>
<cfdump var = “#response#”>
Application.cfc
また、Application.cfc を使用して、SP および IdP 設定を指定できます。次に例を示します。
component { this.name = 'sampleApp'; this.security.samlsettings.idp = [ { name: 'idpt', entityID: 'http://www.linktoentityid.com', ssoURL: 'https://entityid.com/sso/saml', sloURL: 'https://entityid.com/slo/saml', ssoBinding: 'POST', sloBinding: 'REDIRECT', signMessage: true, signrequests: true, encryptrequests: false, signcertificate: 'ABCDEF...' } ] this.security.samlsettings.sp = [ { name: 'spt', entityId: 'admin', acsURL: 'http://localhost:8500/response.cfm', sloURL: 'http://localhost:8500/logout.cfm', acsbinding: 'POST', slobinding: 'REDIRECT', signrequests: true, wantassertionssigned: true, logoutresponsesigned: true, signkeystorepath: 'C:\ColdFusion\cfusion\lib\okta.p12', signkeystorepassword: 'abcdef', signkeystorealias: 'selfsigned', requeststore: 'redis' } ] }
SAML ColdFusion API
InitSAMLAuthRequest
IDP を使用したログイン処理を開始します。
シンタックス
InitSAMLAuthRequest(options)
パラメーター
|
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
relayState |
リクエストに添付された文字列トークン。IDP を使用した認証に成功すると、このトークンが SAMLResponse で送り返されるので、認証が完了したらユーザーを任意のページにリダイレクトできます。 |
template |
IDP へのリダイレクトがおこなわれる前に中間的な読み込みページとして使用できるテンプレートの場所。POST バインディングにのみ有効です。 |
lifetime |
IDP からの応答を待つ間、SAML リクエストを保持する必要がある時間。 |
例
<cfset struct1 = StructNew()> <cfset struct1.relaystate = "page"> <cfset struct1.idp = StructNew()> <cfset struct1.idp.name = "idp1"> <!--- Specify the name of the idp added through ColdFusion admin page or Application.cfc ---> <cfset struct1.sp = StructNew()> <!--- Give the name of the sp added through ColdFusion admin page or Application.cfc ---> <cfset struct1.sp.name = "sp1"> <cfdump var="#struct1#"> <cfscript> InitSAMLAuthRequest(struct1); </cfscript>
GetSAMLAuthRequest
XML 認証リクエストがどのように見えるかを示す表現を返します。
シンタックス
GetSAMLAuthRequest(options)
パラメーター
idp |
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
例
<cfset struct1 = StructNew()> <cfset struct1.idp = StructNew()> <cfset struct1.idp.name = "idp1"> <cfset struct1.sp = StructNew()> <cfset struct1.sp.name = "sp1"> <cfset authreq=XmlParse("#GetSAMLAuthRequest(struct1)#")> <cfdump var="#authreq#">
ProcessSAMLResponse
サーバーからの SAML 応答の整合性を確認します。
シンタックス
ProcessSAMLResponse(idp, sp)
パラメーター
idp |
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
例
ProcessSAMLResponse から返される応答構造体には、次の重要なフィールドが含まれています。
SSO 応答
- AUTHENTICATED - ユーザーが IDP で正常に認証されたかどうかを示すブール値
- NAMEID - 認証に使用されたユーザー名(または)電子メールアドレス
- NAMEIDFORMAT - さらなる処理のために NAMEID フィールドの形式を記述します
- ATTRIBUTES - IDP でユーザーに設定された属性のリスト。名前(名)、名前(姓)、許可される役割などが含まれる可能性があります。
- RELAYSTATE - リクエストに添付されている文字列トークン。IDP を使用した認証に成功すると、このトークンが SAMLResponse で送り返されるので、認証が完了したらユーザーを任意のページにリダイレクトできます。
例
<cfset RespStruct = "#ProcessSAMLResponse("idp1", "sp1")#"> <cfdump var="#RespStruct#"> <cfif RespStruct.AUTHENTICATED> <cflogin> <cfloginuser name="#RespStruct.NAMEID#" password="" roles="#ArrayToList(RespStruct.ATTRIBUTES)#"> </cflogin> </cfif>
SLO 応答
- SUCCESSFULLOGOUT - IDP でのユーザーのグローバルセッションが正常に破棄されたかどうかを示すブール値。
InitSAMLLogoutRequest
IDP を使用したログアウト処理を開始します。
シンタックス
InitSAMLLogoutRequest(options)
パラメーター
idp |
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
relayState |
リクエストに添付された文字列トークン。IDP を使用した認証に成功すると、このトークンが SAMLResponse で送り返されるので、認証が完了したらユーザーを任意のページにリダイレクトできます。 |
template |
IDP へのリダイレクトがおこなわれる前に中間的な読み込みページとして使用できるテンプレートの場所。POST バインディングにのみ有効です。 |
lifetime |
IDP からの応答を待つ間、SAML リクエストを保持する必要がある時間。 |
例
<cfset struct1 = StructNew()> <cfset struct1.idp = StructNew()> <cfset struct1.idp.name = "idp1"> <cfset struct1.sp = StructNew()> <cfset struct1.sp.name = "sp1"> <cfset struct1.lifetime = 600> <cfset struct1.relaystate = "page"> <cfscript> InitSAMLLogoutRequest(struct1); </cfscript>
GetSAMLLogoutRequest
XML 認証リクエストがどのように見えるかを示す表現を返します。
シンタックス
GetSAMLLogoutRequest(options)
パラメーター
idp |
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
例
<cfset struct1 = StructNew()> <cfset struct1.idp = StructNew()> <cfset struct1.idp.name = "idp1"> <cfset struct1.sp = StructNew()> <cfset struct1.sp.name = "sp1"> <cfset authreq=XmlParse("#GetSAMLLogoutRequest(struct1)#")> <cfdump var="#authreq#">
isSamlLogoutResponse
SAML ログアウト応答の場合は TRUE を返します。
シンタックス
issamlLogoutResponse()
例
<cfif isSAMLLogoutResponse()> <!--- dumping logout response---> <cfset struct2 = "#ProcessSAMLResponse()#"> <cfdump var="#struct2#">
isSamlLogoutRequest
SAML ログアウト応答の場合は TRUE を返します。
シンタックス
isSamlLogoutRequest()
例
<cfif isSamlLogoutRequest()> <!--- dumping logout request---> <cfset struct3 = "#ProcessSAMLLogoutRequest("logout2", "sp2")#"> <cfdump var="Logging out in App2" output="console"> <cfdump var="#struct3#" output="console"> <cfset SendSAMLLogoutResponse(#struct3.SESSIONINDEX#)>
SendSAMLLogoutResponse
IDP に応答を返します。
シンタックス
SendSAMLLogoutResponse(sessionIndex, idp, sp)
パラメーター
sessionIndex |
閉じるセッションを一意に識別します。 |
idp |
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
例
<cfif isSamlLogoutRequest()> <!--- dumping logout request---> <cfset LogReq = "#ProcessSAMLLogoutRequest("idp1", "sp1")#"> <cfdump var="#LogReq#"> <cfset SendSAMLLogoutResponse(#LogReq.SESSIONINDEX#,"idp1", "sp1")> </cfif>
ProcessSAMLLogoutRequest
リクエストを受け取ると、値(NAMEID、NAMEIDFORMAT、NAMEIDQUALIFIER、NAMEIDSPQUALIFIER、SESSIONINDEX)を含んだ構造体を返します。
シンタックス
ProcessSAMLLogoutRequest(idp,sp)
パラメーター
idp |
ID プロバイダーの名前。 |
sp |
サービスプロバイダーの名前。 |
例
<cfif isSamlLogoutRequest()> <!--- dumping logout request---> <cfset LogReq = "#ProcessSAMLLogoutRequest("idp1", "sp1")#"> <cfdump var="#LogReq#"> <cfset SendSAMLLogoutResponse(#LogReq.SESSIONINDEX#,"idp1", "sp1")> </cfif>
GenerateSAMLSPMetadata
SAML サービスプロバイダーのメタデータを作成します。
シンタックス
GenerateSAMLSPMetadata()
例
<cfset struct1 = StructNew()> <cfset struct1.entityid = "generated_sp_id"> <cfset struct1.acsurl = "http://localhost:8500/acsurl.cfm"> <cfset struct1.slourl = "http://localhost:8500/slourl.cfm"> <cfscript> sp = GenerateSAMLSPMetadata(struct1); </cfscript> <cfdump var="#sp#">
SAML Admin API
AddIdpMetadata
ID プロバイダー設定を追加します。
パラメーター
- alias:文字列、必須、ID プロバイダーのエイリアス
- url:文字列、オプション、メタデータの読み込み先の URL
- file:文字列、オプション、メタデータの読み込み先のファイル
- rawxml:文字列、オプション、メタデータの読み込み先となる未処理の xml
- description:文字列、オプション、説明
- entityid:文字列、オプション、ID プロバイダーの一意のエンティティ ID
- ssourl:文字列、オプション、ID プロバイダーのシングルサインオン URL
- ssobinding:文字列、オプション、シングルサインオンサービスに使用するバインディング(「REDIRECT」または「POST」)
- slourl:文字列、オプション、ID プロバイダーのシングルログアウトサービス URL
- slobinding:文字列、オプション、シングルログアウトサービスに使用するバインディング(「REDIRECT」または「POST」)
- logoutresponseurl:文字列、オプション、ID プロバイダーからログアウトリクエストを受け取った後のリダイレクト先の URL
- signrequests:ブール値、オプション、応答が ID プロバイダーによって署名されているかどうかを示すフラグ(デフォルトは false)
- encryptrequests:ブール値、オプション、応答が ID プロバイダーによって暗号化されているかどうかを示すフラグ(デフォルトは false)
- signcertificate:文字列、オプション、署名に使用された X509 証明書
- encryptcertificate:文字列、オプション、暗号化に使用された X509 証明書
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") // Add metadata from URL idpAlias="url" idpMetadataUrl=”https://metadata-url/” try{ myObj.addIdpMetadata(alias= idpAlias,url= idpMetadataUrl) writeOutput("IDP Metadata added successfully") } catch (any e){ writeDump(e) } // Add metadata from file idpAlias = “file” idpMetadataFile = “/opt/metadata.xml” try{ myObj.addIdpMetadata(alias= idpAlias,file= idpMetadataFile) writeOutput("IDP Metadata added successfully") } catch (any e){ writeDump(e) } // Add raw metadata xml idpAlias = “raw” idpMetadataRaw = “<md:EntityDescriptor ......” try{ myObj.addIdpMetadata(alias= idpAlias,rawxml= idpMetadataRaw) writeOutput("IDP Metadata added successfully") } catch (any e){ writeDump(e) } // Add metadata manually idpAlias = “manual” idpSsoUrl = “http://idp.com/sso” idpEntityId = “entity1” try{ myObj.addIdpMetadata(alias= idpAlias,ssourl= idpSsoUrl, entityid = idpEntityId) writeOutput("IDP Metadata added successfully") } catch (any e){ writeDump(e) } </cfscript>
AddSpMetadata
サービスプロバイダー設定を追加します。
パラメーター
- alias:文字列、必須、サービスプロバイダーのエイリアス
- description:文字列、オプション、説明
- entityid:文字列、必須、サービスプロバイダーの一意のエンティティ ID
- acsurl:文字列、必須、サービスプロバイダーのアサーションコンシューマーサービス URL
- acsbinding:文字列、オプション、シングルサインオンサービスに使用するバインディング(「REDIRECT」または「POST」)
- slourl:文字列、オプション、サービスプロバイダーのシングルログアウトサービス URL
- slobinding:文字列、オプション、シングルログアウトサービスに使用するバインディング(「REDIRECT」または「POST」)
- signrequests:ブール値、オプション、応答がサービスプロバイダーによって署名されているかどうかを示すフラグ
- wantassertionssigned:ブール値、オプション、ID プロバイダーがアサーションに署名するかどうかを示すフラグ
- logoutresponsesigned:ブール値、オプション、ID プロバイダーがログアウトリクエストに署名するかどうかを示すフラグ
- signkeystorepath:文字列、オプション、署名に使用するキーストアファイルのパス
- signkeystorepassword:文字列、オプション、署名に使用するキーストアファイルのパスワード
- signkeystorealias:文字列、オプション、キーストア内のエントリのエイリアス
- signmetadata:ブール値、オプション、書き出し時にメタデータに署名するかどうかを示します
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") // setting up parameter values spAlias="spAlias" spDescription="sp description" spEntityid="abc" spAcsbinding="POST" spAcsurl="http://localhost:8500/acsurl.cfm" try{ myObj.addSpMetadata(alias = spAlias, description = spDescription, entityid = spEntityid, acsbinding = spAcsbinding, acsurl = spAcsurl) writeOutput("SP added successfully") } catch (any e){ writeDump(e) } </cfscript>
DeleteIdpMetadata
ID プロバイダー設定を削除します。
パラメーター
- alias:文字列、必須、ID プロバイダーのエイリアス
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") alias="myalias" try{ myObj.deleteIdpMetadata(alias) writeOutput("IDP deleted successfully") } catch (any e){ writeDump(e) } </cfscript>
DeleteSpMetadata
サービスプロバイダー設定を削除します。
パラメーター
- alias:文字列、必須、サービスプロバイダーのエイリアス
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") alias="spAlias" try{ myObj.deleteSpMetadata(alias) writeOutput("SP deleted successfully") } catch (any e){ writeDump(e) } </cfscript>
ExportSpMetadata
選択されたサービスプロバイダー設定を書き出します。
パラメーター
- alias:文字列、必須、サービスプロバイダーのエイリアス
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") alias="spAlias" try{ myObj.ExportSpMetadata(alias) writeOutput("SP exported successfully") } catch (any e){ writeDump(e) } </cfscript>
注意:書き出された SP メタデータは、デフォルトでは cfinstance/lib/saml フォルダーに保存されます。
GetIdpMetadata
構造体内の指定エイリアスのサービスプロバイダー設定を返します。
パラメーター
- alias:文字列、必須、サービスプロバイダーのエイリアス
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") alias="spAlias" spMetadataDetails=myObj.getSpMetadata(alias) writeDump(spMetadataDetails) </cfscript>
GetSpMetadata
構造体内の指定エイリアスのサービスプロバイダー設定を返します。
パラメーター
- alias:文字列、必須、サービスプロバイダーのエイリアス
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") alias="spAlias" spMetadataDetails=myObj.getSpMetadata(alias) writeDump(spMetadataDetails) </cfscript>
ModifyIdpMetadata
既存の ID プロバイダー設定を変更します。
パラメーター
- oldalias:文字列、必須、既存の ID プロバイダー設定のエイリアス
- newalias:文字列、必須、ID プロバイダー設定の新しいエイリアス
- url:文字列、オプション、メタデータの読み込み先の URL
- file:文字列、オプション、メタデータの読み込み先のファイル
- rawxml:文字列、オプション、メタデータの読み込み先となる未処理の xml
- description:文字列、オプション、説明
- entityid:文字列、オプション、ID プロバイダーの一意のエンティティ ID
- ssourl:文字列、オプション、ID プロバイダーのシングルサインオン URL
- ssobinding:文字列、オプション、シングルサインオンサービスに使用するバインディング(「REDIRECT」または「POST」)
- slourl:文字列、オプション、ID プロバイダーのシングルログアウトサービス URL
- slobinding:文字列、オプション、シングルログアウトサービスに使用するバインディング(「REDIRECT」または「POST」)
- logoutresponseurl:文字列、オプション、ID プロバイダーからログアウトリクエストを受け取った後のリダイレクト先の URL
- signrequests:ブール値、オプション、応答が ID プロバイダーによって署名されているかどうかを示すフラグ
- encryptrequests:ブール値、オプション、応答が ID プロバイダーによって暗号化されているかどうかを示すフラグ
- signcertificate:文字列、オプション、署名に使用された X509 証明書
- encryptcertificate:文字列、オプション、暗号化に使用された X509 証明書
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") oldalias="myalias" newalias="newalias" url="http://idp-url" try{ myObj.modifyIdpMetadata(oldalias = oldalias, newalias = newalias, url = url) writeOutput("IDP modified successfully") } catch(any e){ writeDump(e) } </cfscript>
ModifySpMetadata
サービスプロバイダー設定を変更します。
パラメーター
- oldalias:文字列、必須、サービスプロバイダーの古いエイリアス
- newalias:文字列、必須、サービスプロバイダーの新しいエイリアス
- description:文字列、オプション、説明
- entityid:文字列、必須、サービスプロバイダーの一意のエンティティ ID
- acsurl:文字列、必須、サービスプロバイダーのアサーションコンシューマーサービス URL
- acsbinding:文字列、オプション、シングルサインオンサービスに使用するバインディング(「REDIRECT」または「POST」)
- slourl:文字列、オプション、サービスプロバイダーのシングルログアウトサービス URL
- slobinding:文字列、オプション、シングルログアウトサービスに使用するバインディング(「REDIRECT」または「POST」)
- signrequests:ブール値、オプション、応答がサービスプロバイダーによって署名されているかどうかを示すフラグ
- wantassertionssigned:ブール値、オプション、ID プロバイダーがアサーションに署名するかどうかを示すフラグ
- logoutresponsesigned:ブール値、オプション、ID プロバイダーがログアウトリクエストに署名するかどうかを示すフラグ
- signkeystorepath:文字列、オプション、署名に使用するキーストアファイルのパス
- signkeystorepassword:文字列、オプション、署名に使用するキーストアファイルのパスワード
- signkeystorealias:文字列、オプション、キーストア内のエントリのエイリアス
- signmetadata:ブール値、オプション、書き出し時にメタデータに署名するかどうかを示します
例
<cfscript> adminObj = createObject("component","cfide.adminapi.administrator"); adminObj.login("admin"); // Instantiate the security object. myObj = createObject("component","CFIDE.adminapi.security") oldalias="spAlias" newalias="newalias" acsurl = “http://sp.com” entityid="http://entity-id-url/" acsbinding="REDIRECT" try{ myObj.modifySpMetadata(oldalias = oldalias, newalias = newalias, entityid = entityid, acsurl = acsurl, acsbinding = acsbinding) writeOutput("SP modified successfully") } catch(any e){ writeDump(e) } </cfscript>