回答編集履歴
1
コメントにより加筆
test
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
SPは認証情報を保管しません。「このユーザはIdPが認証アサーションを発行したユーザだ」という情報を保管します。
|
2
2
|
|
3
|
-
そもそも、SPはユーザから認証情報をまったく受け取りません。ユーザが認証情報を入力するのはIdPの認証機構に対してです。SPには、そのユーザがIdPによって認証されたユーザだということしか分かりません。
|
3
|
+
そもそも、SPはユーザから認証情報をまったく受け取りません。ユーザが認証情報を入力するのはIdPの認証機構に対してです。SPには、そのユーザがIdPによって認証されたユーザだということしか分かりません。SPはIdPのサーバ証明書でIdPのアサーション (IdPの秘密鍵によって署名されていると考えてください) を検証し、成功すればそれを信用します。
|
4
4
|
|
5
|
-
|
5
|
+
この時点では、SPにはユーザが認証されていることがわかるだけでユーザの属性 (ユーザ名など) はわかりません。そこで通常は、SPはIdPに対して属性要求アサーションを発行します。IdPはそれに応えて属性アサーションを発行してIdPのポリシで提供することを認めている属性をSPに知らせます。
|
6
6
|
|
7
|
+
SPに知らされる属性は、ユーザがIdPで認証するのに使用した認証情報とは関係がないことに注意してください。SPがアカウント名などの認証情報を知らなくてもそのユーザが認証されていることは確かです (SPが信頼するIdPがそう言っているのですから)。それどころか、IdPのポリシによってはSPに知らせることのできるユーザ属性がまったくないことさえあります。SPにとってはどこの誰かもわからないユーザであっても、IdPが認証されたユーザであると認めているのならサービスを提供することができます。
|
8
|
+
|
9
|
+
このように、SAML技術を利用して、各SPに認証情報や余計なユーザ属性を保管させないようにしながらユーザが安全にサービスを利用できるしくみが実現できます。
|
10
|
+
|
11
|
+
なおSPは、SPにアクセスしてきているユーザを識別するためになんらかのセッション機構を利用することがありますが、それはHTTPクッキーなどを使って実現されることがあります。ただ、これはSAMLの仕様ではなく、個々のSPとサービスアプリケーションとの連携の仕組みであり、具体的な実装はプロダクトによって様々です。ですのでこの点については、個別のプロダクトについての疑問があれば別途ご質問されるとよいかと思います。
|
12
|
+
|