「[[マイクロソフト系技術情報 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]]~ ここでは、セキュリティ対策や認証・認可などの処理のための、~ 認証チケット(証拠)などので使用するトークンについて説明する。 **アサーションとトークン [#efc85f9f] 以下の様な標準仕様を見ると、 -SAML assertions defined in the SAML Token Profile standard. -JSON Web Token (JWT) is a JSON-based open standard (RFC 7519) for creating access tokens that assert some number of claims. それぞれ、以下のように定義されている。 -「複数のクレーム(クレームセット)」を格納する「アサーション」を「トークン」 -「アサーション」のフォーマットを「トークン・プロファイル」 従って、アサーション ≒ トークンらしい。 **アサーションとは? [#xbeb945f] では、アサーションとは一体何者か?ということになるが、 -「アサーション」とは、何らかの対象に関する属性や設定などの情報を列挙した、データ集合を指す場合が多い。 -標準化された技術仕様において、適用場面の限られたオプション仕様などのことをプロファイルということがある。 らしい(技術的に標準化されたフォーマット的なモノ)。 **トークンとは? [#oe033372] 上記の文脈上からは、 -先ず、[[SAML]]アサーションや[[JWT]]アサーションなどの標準仕様があり、~ -それを[[WS-FED>WS-Federation]]や[[OAuth]]、[[OpenID Connect]]で使用する際の~ オプション仕様を、「トークン・プロファイル」と言う。 ざっくり、アサーションを実際に使うとトークン。 解り易いのが、[[JWT]]アサーションをアクセストークンとして使用する例。 *用語 [#e654c61e] **クレーム [#m55517b5] -対象となるエンティティ(“サブジェクト”)に関する事実の情報 -認証で使用する場合、認証ユーザのIDや資格・権限情報、その他の属性情報などがクレームに該当する。 **アサーション [#ie279b4b] アサーション = 表明の意味。 複数のクレーム(クレームセット)から構成され、~ 認証、属性、権限の認可を表明するための情報を格納するデータ集合。 **トークン [#if523ce8] [[概要>#efb6fb2e]]に書いたとおり。 *トークンの表現方法 [#j94fdc3e] トークンには、以下の様な表現方法がある。 **[[SAML]] [#u55245de] **[[JWT]] [#x21cc2b6] *トークンの種類 [#i8de040f] **セキュリティ トークン [#pa932cd4] 当該アクセスに添付され認証・認可をするためのアサーション。 従って、以下が含まれた情報。 -認証・認可に必要なクレームから構成されるクレームセット -認証オーソリティによって上記に署名を加えたコントラクト(契約) ***デジタル署名 [#ad462f94] 署名には、暗号化技術が使用され、改竄等が無いか検証可能になっている。 ***SSOソフトウェア [#v2982248] -シームレスな認証や、password fillingを行なう場合がある。 -同様に、暗号化技術が使用され、改竄等が無いか検証可能になっている。 ***ワンタイムパスワード [#b3253de1] -ログイン毎や、時間経過で変化するタイプ -チャレンジ&レスポンスなどもワンタイムパスワード ***Authorizationヘッダ [#qcca7e53] そう考えると、Digest認証、Basic認証の~ Credentialもある種の認証トークンと言える。 -Authorizationヘッダ情報に設定される。 -ユーザIDとパスワードの情報を含んでいる。 -以下を参照すると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 ***その他 [#me816ded] 以下の様な、多様なトークンがある。 -セキュリティトークンの種類を学ぼう|株式会社テリロジー~ 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: [[:セキュリティ]], [[:認証基盤]], [[:暗号化]]