「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
トークンには色々な意味があるが、
ここでは、セキュリティ対策や認証・認可などの処理のための、
認証チケット(証拠)などので使用するトークンについて説明する。
トークンの種類 †
認証・認可で使用するトークンにも様々なものがアル。
セキュリティ トークン †
- コンピュータ・サービスの利用権限のある利用者に、
認証の助けとなるよう与えられる物理デバイス
- ハードウェア・トークン、認証トークン、暗号トークンとも呼ばれる。
タイプ †
以下のようなタイプが有り、基本的に物理デバイスのもの。
- Bluetooth型トークン
- 携帯電話
- 非接続型トークン
- PCカード型トークン
- スマートカード型トークン
- USB型トークン
- スマートカード・USB型トークン
※ 昨今の物理デバイス上のTPMを使用した
ソフトウェア・トークンも入れて良さそう。
実装 †
- デジタル署名
- 利用者だけが署名鍵にアクセスできることが満たされている必要がある。
- 署名は利用者の識別情報の証明にも使えるので、ユーザ認証にも使用できる。
- SSOソフトウェア
- シームレスな認証や、password fillingを行なう場合がある。
- 同様に、暗号化技術が使用され、改ざん等が無いか検証可能になっている。
- ワンタイムパスワード
- ログイン毎や、時間経過で変化するタイプ
- チャレンジ&レスポンスなどもワンタイムパスワード
認証・認可プロトコルのトークン †
当該アクセスに添付され認証・認可をするためのアサーション。
従って、以下が含まれた情報。
- 認証・認可に必要なクレームから構成されるクレームセット
- 認証オーソリティによって上記に署名を加えたコントラクト(契約)
署名には、暗号化技術が使用され、改ざん等が無いか検証可能になっている。
Authorizationヘッダ †
- Digest認証、Basic認証のCredentialもある種の認証トークンと言える。
ユーザIDとパスワードの情報を含んでいる(クレームセット → アサーション)。
- Authorizationヘッダ情報に設定される。
以下を参照するとBearer Token も OAuth に限らず、
一般的な HTTP 認証トークンとして使用可能であるもよう。
- OAuth2.0を認証に使用する際の問題点とその対応方法
- RFC 7235 で "Authorization: auth-scheme (token68 / auth-params)" が定義済みで、
"auth-scheme" には Basic, Digest に加え Bearerが登録済み(IANAにより管理)。
- 持参人切符 : Bearer Token
- 通常のOAuthのTokenは「bearer・token」。
- 「bear (持ってきた)+ er(人)」=「持参人」。
- 具体的には「電車」の「切符」のこと。
- 持参人は誰でも、切符が有効ならば利用可能。
- 記名式切符 :
Sender Constrained Token, User Constrained Token,
Holder-of-Key Token, Proof-of-possession Token.
- 上記「切符」に対し、名前が書かれた「国際線」の「ボーディングパス」など。
- ゲートでは、名前・顔とパスポートの記載が一致するかを確認する。
- 誰かがボーディングパスを盗んでも、使うことはできない(盗難 & 再生の防止)。
- MAC Token
- Accessトークンと共にMessage Authentication Code (MAC)キーを発行する。
- MACキーはHTTPリクエストの一部分を署名するのに利用される。
その他 †
SASトークン †
- SAS:Shared Access Signatures(共有アクセス署名)
- 1 つまたは複数のリソースを指す署名付き URI
- 昨今、クラウド関連のサービスで使用されることが多い。
- One Driveの共有(URL)のような機能で利用されることが多い。
- URIのトークン(QueryString?のパラメタセット)が含まれている。
- パラメタの 1 つにパラメタセットに対する署名がある。
- リソースへのクライアントのアクセス方法を示す(認可)。
- 基本的に、ポータルなどから入手することが多いが、
プログラムから、SASトークンを生成することもできる。
(必要なパラメタセットを署名することで生成できる)
CSRF対策用トークン †
- 認証・認可用ではないが、CSRFを防止するための単なる乱数もトークンと呼ぶ。
- 正規のリクエストなのか、攻撃者のリクエストなのかを判断できる。
用語 †
認証・認可プロトコルのトークンの用語。
※ セキュリティ トークンにはあまり難しい用語は無い。
クレーム(クレームセット) †
- 対象となるエンティティ("サブジェクト")に関する事実の情報
- クレームの集合が、クレームセットになる。
アサーションとトークン †
- Assertions and Protocols for the OASIS SAMLV2.0
- RFC 7519 - JSON Web Token (JWT)
アサーション †
≒ 表明:(自分の考え・決意などを、)はっきりあらわし示すこと。
プログラムの前提として満たされるべき条件を記述するもの。
- 何らかの対象に関する属性や設定などの情報を列挙した、データ集合を指す場合が多い。
- 認証・認可では、単なる属性ではなく、認証ユーザのIDや資格・権限情報、
その他の属性情報の表明のためのデータ集合として使用される。
- 標準化された技術仕様において、
適用場面の限られたオプション仕様などのことをプロファイルということがある。
- 以下、RFC7521からの引用。
- セキュリティドメイン間でIDとセキュリティ情報の共有を容易にする情報のパッケージ
- アサーションには、通常、以下のような情報が含まれる。
- 主体または主体に関する情報
- アサーションを発行した当事者に関する情報
- およびアサーションが発行された日時
- およびアサーションが有効であるとみなされる条件
(たとえば、いつどこで使用できるかなど)
- 用語
- 発行者
アサーションを作成し、署名し、完全性保護するエンティティ
- 依拠当事者
アサーションを消費し、その情報に依存するエンティティ
トークン †
上記の文脈上からは、
ざっくり、アサーションを実際に使うとトークン。
解り易いのが、JWTアサーションをアクセストークンとして使用する例。
参考 †
以下の様な、多様なトークンがある。
セキュリティ トークン †
認証・認可プロトコルのトークン †
サンプルコード †
その他 †
SASトークン †
CSRF対策用トークン †
Tags: :セキュリティ, :認証基盤, :暗号化