「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>認証基盤]] * 目次 [#h992f734] #contents *概要 [#efb6fb2e] [[トークンには色々な意味があるが、>http://e-words.jp/w/%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3.html]]~ ここでは、セキュリティ対策や認証・認可などの処理のための、~ 認証チケット(証拠)などので使用するトークンについて説明する。 *用語 [#z3b25ede] **クレーム(クレームセット) [#b5414871] -対象となるエンティティ(“サブジェクト”)に関する事実の情報 -クレームの集合が、クレームセットになる。 **アサーションとトークン [#efc85f9f] 以下の様な標準仕様を見ると、 -Assertions and Protocols for the OASIS SAMLV2.0 -RFC 7519 - JSON Web Token (JWT) それぞれ、以下のように定義されている。 -「複数の[[クレーム(クレームセット)>#b5414871]]」を格納する「[[アサーション>#xbeb945f]]」を「[[トークン>#if523ce8]]」 -「[[アサーション>#xbeb945f]]」のフォーマットを「[[トークン>#if523ce8]]・プロファイル」 ・・・従って、「[[アサーション>#xbeb945f]]」≒「[[トークン>#if523ce8]]」らしい。 ***アサーション [#xbeb945f] ≒ 表明:(自分の考え・決意などを、)はっきりあらわし示すこと。~ プログラムの前提として満たされるべき条件を記述するもの。 -複数の[[クレーム(クレームセット)>#b5414871]]から構成され、 --何らかの対象に関する属性や設定などの情報を列挙した、データ集合を指す場合が多い。 --認証・認可では、単なる属性ではなく、認証ユーザのIDや資格・権限情報、~ その他の属性情報の表明のためのデータ集合として使用される。 --標準化された技術仕様において、~ 適用場面の限られたオプション仕様などのことをプロファイルということがある。 -以下、RFC7521からの引用。 --セキュリティドメイン間でIDとセキュリティ情報の共有を容易にする情報のパッケージ --アサーションには、通常、以下のような情報が含まれる。 ---主体または主体に関する情報 ---アサーションを発行した当事者に関する情報 ---およびアサーションが発行された日時 ---およびアサーションが有効であるとみなされる条件~ (たとえば、いつどこで使用できるかなど) --用語 ---発行者~ アサーションを作成し、署名し、完全性保護するエンティティ ---依拠当事者~ アサーションを消費し、その情報に依存するエンティティ ***トークン [#oe033372] 上記の文脈上からは、 -先ず、[[SAML]][[アサーション>#xbeb945f]]や[[JWT]][[アサーション>#xbeb945f]]などの標準仕様があり、~ -それを[[WS-FED>WS-Federation]]や[[OAuth]]、[[OpenID Connect]]で使用する際の~ オプション仕様を、「トークン・プロファイル」と言う。 ざっくり、[[アサーション>#xbeb945f]]を実際に使うとトークン。 解り易いのが、[[JWT]][[アサーション>#xbeb945f]]をアクセストークンとして使用する例。 *トークンの種類 [#i8de040f] **セキュリティ トークン [#pa932cd4] 当該アクセスに添付され認証・認可をするための[[アサーション>#xbeb945f]]。 従って、以下が含まれた情報。 -認証・認可に必要な[[クレームから構成されるクレームセット>#b5414871]] -認証オーソリティによって上記に署名を加えたコントラクト(契約)~ 署名には、暗号化技術が使用され、改竄等が無いか検証可能になっている。 ***SSOソフトウェア [#v2982248] -シームレスな認証や、password fillingを行なう場合がある。 -同様に、暗号化技術が使用され、改竄等が無いか検証可能になっている。 ***ワンタイムパスワード [#b3253de1] -ログイン毎や、時間経過で変化するタイプ -チャレンジ&レスポンスなどもワンタイムパスワード ***Authorizationヘッダ [#qcca7e53] -Digest認証、Basic認証のCredentialもある種の認証トークンと言える。~ ユーザIDとパスワードの情報を含んでいる([[クレームセット>#b5414871]] → [[アサーション>#xbeb945f]])。 -Authorizationヘッダ情報に設定される。~ 以下を参照するとBearer Token も OAuth に限らず、~ 一般的な HTTP 認証トークンとして使用可能であるもよう。 --[[OAuth2.0を認証に使用する際の問題点とその対応方法>OAuth#add861ca]] -- RFC 7235 で "Authorization: auth-scheme (token68 / auth-params)" が定義済みで、~ "auth-scheme" には Basic, Digest に加え Bearerが登録済み(IANAにより管理)。 ---トークンを利用した認証・認可 API を実装するとき~ Authorization: Bearer ヘッダを使っていいのか調べた - Qiita~ http://qiita.com/uasi/items/cfb60588daa18c2ec6f5 **その他 [#r7f60170] ***CSRF対策用トークン [#q7727519] CSRFを防止するための単なる乱数もトークンと呼んだりする。 -参考 --Webセキュリティの小部屋 ---CSRF の安全なトークンの作成方法~ https://www.websec-room.com/2013/03/05/431 ---CSRF の安全なトークンの作成方法(PHP編)~ https://www.websec-room.com/2013/03/05/443 ---CSRF の安全なトークンの作成方法(ASP.NET,C#,VB.NET編)~ https://www.websec-room.com/2013/03/05/451 *参考 [#c637467b] 以下の様な、多様なトークンがある。 -セキュリティトークンの種類を学ぼう|株式会社テリロジー~ http://www.terilogy.com/product/vasco/token_type.html -セキュリティトークン - Wikipedia > 3.トークンのタイプ~ https://ja.wikipedia.org/wiki/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3#.E3.83.88.E3.83.BC.E3.82.AF.E3.83.B3.E3.81.AE.E3.82.BF.E3.82.A4.E3.83.97 ---- Tags: [[:セキュリティ]], [[:認証基盤]], [[:暗号化]]