XML(Extensible Markup Language)とは?
XMLは「ファイルの形式」として使われることが多いですが、より正確に言うと「マークアップ言語の標準規格です。
規格(仕様)としてのXML
- 正式名称: Extensible Markup Language(拡張可能なマークアップ言語)
- 役割: データの構造化と意味付けを行うための仕様(規格)
- 特徴:
- 拡張性: HTMLとは異なり、利用者が自由にタグ(要素名)を定義できます。これにより、データの意味を明確にしやすくなります。(例:
<名前>山田太郎</名前>や<住所>...</住所>) - 汎用性: 異なるコンピューターシステムやプログラミング言語の間で、データを交換するための標準的なフォーマットとして広く利用されています。
- 構造化: データが階層構造(ツリー構造)で記述されるため、人間にも機械にも読みやすい形式。
- 拡張性: HTMLとは異なり、利用者が自由にタグ(要素名)を定義できます。これにより、データの意味を明確にしやすくなります。(例:
ファイル形式としてのXML
XMLの規格に則って記述されたデータは、通常、拡張子.xmlのファイル形式として保存されます。
例えば、Microsoft Officeのファイル形式(.docx, .xlsxなど)も、内部的にはXMLベースの形式(Office Open XML)を採用しています。
つまり、XMLは「データをどう記述するか」という仕様(規格)であり、その仕様に従って作られた具体的なデータが「.xmlファイル」などのファイル形式となる、という関係です。
SAMLとの関係は?
SAML(Security Assertion Markup Language)は、XMLの規格をベースにして作られた、特定の目的のための上位の規格です。
SAMLの概要
- 目的: 主にSSO(シングルサインオン)やID連携を実現するために使用される、認証・認可情報をやり取りするための標準規格
- 仕組み: 異なるサービス間(例えば、企業のID管理システムとクラウドサービス)で、ユーザーの認証情報や権限を記述したメッセージ(アサーションと呼ばれます)を交換する
XMLとSAMLの関係
SAMLがやり取りする「アサーション」やメッセージは、すべてXML形式で記述することが決められています。
- SAML $\subset$ XML: SAMLは、「セキュリティに関する情報を記述する専用のXML言語」のようなものだと考えると分かりやすいです。
- SAMLは、XMLが持つデータの構造化や汎用性といった特徴を利用して、安全かつ正確に認証情報を伝達できるように設計されています。
まとめると
- XML: データを構造化するための基本となるマークアップ言語の規格。
- SAML: XMLを基盤として、特にセキュリティ情報(認証・認可)を交換するために定義された上位の規格。
.samlもあるの?
SAML自体は「ファイル形式」というより「規格」や「プロトコル(通信規約)」です。
SAMLは「規格」
XMLが「データをどう記述するか」という基本的な文法のルール(規格)であったのに対し、SAMLはそのXMLを使い、特定の目的のためにさらにルールを定めた上位の規格です。
SAMLの主な役割
SAML(Security Assertion Markup Language)の主な役割は、認証情報や認可情報をやり取りする際のメッセージの形式と手順を定めることです。
- 規格(仕様): SSO(シングルサインオン)を実現するための、メッセージの構造や通信の手順を定めたルール。
- プロトコル(通信規約): 認証情報(SAMLメッセージ)を、IDプロバイダ(IdP)とサービスプロバイダ(SP)の間でどのようにやり取りするかという通信の流れを定めています。
SAMLメッセージの形式はXML
SAMLの規格に従って作成される「認証・認可に関する情報(アサーション)」は、必ずXML形式で記述されます。
- SAMLメッセージは、データとして見ると、確かにXMLの文書(テキストデータ)の形をしています。
- しかし、このメッセージは通常、ファイルとして保存されるのではなく、WebブラウザやHTTP通信を通じてリアルタイムで送信・交換されます。
例:
ユーザーがサービスにログインしようとすると、IDプロバイダは「このユーザーは認証済みである」という情報(SAMLアサーション)をXML形式で作成し、サービスプロバイダに送ります。
このXMLデータは、ネットワーク上の「メッセージ」としてやり取りされるのが一般的です。
XMLとSAMLの関係性まとめ
| 特徴 | XML (Extensible Markup Language) | SAML (Security Assertion Markup Language) |
| 役割 | 汎用的なマークアップ言語の規格。データの構造化・意味付け。 | SSOを実現するためのセキュリティ情報交換の規格(プロトコル)。 |
| 形式 | 規格に従って作成されたデータは、.xmlなどのファイル形式として保存されることがある。 | 規格に従って作成された認証情報は、XML形式のメッセージとして、通信中にやり取りされる。 |
| 関係 | SAMLは、XMLの文法と構造を利用して作られている。 | SAMLは、XMLを基盤として、独自のタグやルールを定義している。 |
つまり、SAMLは、その「メッセージの中身」の形式がXMLであるため、XMLと混同されやすいですが、「どのようにデータを送るか」という手順まで含む大きな仕組み(規格・プロトコル)、という点が異なります。
ご質問の意図を承知いたしました。XMLおよびSAMLの「本体」の仕様が RFC(Request For Comments)として公開されているか、そしてその仕様が どこにあるか、という点に絞って回答します。
XML、SAMLそれぞれの公式仕様は?
XML および SAML の中核となる本体仕様はETF (RFC の発行元) ではなく、それぞれ別の標準化団体によって策定・管理されています。
そのため、「XML本体のRFC」「SAML本体のRFC」というものは存在しません。
| 仕様 | 策定機関 | 本体仕様の形式 | 本体仕様は RFC か? |
| XML | W3C | 勧告 (Recommendation) | いいえ |
| SAML | OASIS | 標準 (Standard) | いいえ |
XML (Extensible Markup Language) の本体仕様
- 策定機関: W3C (World Wide Web Consortium)
- 本体仕様の場所:
- XML の基本的な構文、構造、要件を定めた仕様は、W3C の「勧告 (Recommendation)」として公開されています。
- 現在の最新版: XML 1.1 および XML 1.0 (第5版)
- RFC の有無:
- 本体仕様は RFC ではありません。
- ただし、XML データをインターネット上でやり取りするためのメディアタイプ(
application/xmlやtext/xmlなど)については、IETFによって RFC が発行されています(例:RFC 7303 など)。これは、XML自体ではなく、インターネットプロトコルにおけるXMLの取り扱いルールを定めたものです。
| 仕様 | 備考 |
| W3C (組織全体) | W3C のホームぺージです。 |
| XML 1.0 (第5版) 勧告 | 現在最も広く使用されている XML の基本仕様です。 |
| XML 1.1 勧告 | Unicode の更新などを反映した新しい仕様ですが、1.0ほどは普及していません。 |
| XML Namespaces 1.0 勧告 | XML文書内で一意な名前を定義するための名前空間の仕様です。 |
SAML (Security Assertion Markup Language) の本体仕様
- 策定機関: OASIS (Organization for the Advancement of Structured Information Standards)
- 本体仕様の場所:
- SAML の仕様(アサーション、プロトコル、バインディングなど)は、OASIS の「標準 (Standard)」として公開されています。
- 現在の最新版: SAML V2.0
- RFC の有無:
- 本体仕様は RFC ではありません。
- ただし、SAML を特定のプロトコル(例:OAuth 2.0)やセキュリティフレームワークと組み合わせて使用するための連携ルールやプロファイルについては、IETFによって RFC が発行されています(例:RFC 7522、RFC 6595 など)。これは、SAML自体ではなく、インターネット上の特定のユースケースにおける適用方法を定めたものです。
| 仕様 | 備考 |
| OASIS (組織全体) | OASIS のホームぺージです。 |
| SAML V2.0 仕様トップページ | Security Assertion Markup Language (SAML) V2.0 の仕様へのリンク集があるページです。 |
| SAML V2.0 アサーション | SAML の認証、属性、許可決定といった情報のコアな構造(アサーション)を定めています。 |
| SAML V2.0 プロトコル | アサーションを要求・取得するためのメッセージ交換のルールを定めています。 |
SAMLはXMLを使った上位規格
理解は深まりましたか?
SAMLはXMLやYAMLなどと並ぶものなのかと思っていましたが、そうではなく、XMLを使ったSSOの1つでした。
参考になったら幸いです。
コメント