tomine@IA* (B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム tomine@IA* (B2) 親: minami, kazuki
背景 体重計・体温計などの計器 個人を特定するための認証 取得した情報をネットワーク上で管理するようなアプリケーション 取得した情報と人の関連が分からないと意味がない 個人を特定する必要がある 個人を特定するための認証 様々なIDが存在している
問題点 個人を特定するために アプリケーション毎に認証の処理を行っている それぞれIDと人との関係の情報を別に持っている 別アプリケーションからのデータを横断的に参照できない
目的 認証部分をアプリケーションから切り離す IDと人との関係をまとめて管理する アプリケーションでの認証の作業を減らす アプリケーションが違っても同じ識別子で個人を特定することができる IDを複数持っていても同一の個人を特定できる
目的 認証部分をまとめる 複数のIDを使えるようにする 違うIDを用いても同じ人だと認識できるようにする 種類が違うからといって使えないようでは困る 一カ所で複数のIDを使うこともできる 違うIDを用いても同じ人だと認識できるようにする
概要 アプリケーション AuthID() 認証 モジュール 認証情報 アプリケーション 認証情報
設計 認証部分をアプリケーションから切り離す 認証=個人の特定 様々な種類のID IDのリストは種類毎に管理
設計 IDのリスト IDの種類ごとに管理する 新しい機器が出た場合に対応が容易 ある種類の情報が他のサーバにあっても情報を 得ることができる 場所が分散するが typeから 検索できるようにする AuthID() 認証サーバ DBName -DB IDc-DB IDa-DB IDb-DB
設計 User-ID type 一人に一つ割り当てられる IDと対にして格納 種類に対して一つ ID保存先と対にして格納 一意でなくてはならない IDと対にして格納 type 種類に対して一つ 一意に ID保存先と対にして格納 AuthID() 認証サーバ DBName -DB IDa-DB IDb-DB
設計 API部分 アプリケーション側 動作 引数に認証サーバのホスト名とtype+ID IDを認証サーバに 送信する type+ID : typeとIDと‘+’で繋いだ文字列 動作 IDを認証サーバに 送信する User-IDが IDを渡した変数に入る AuthID() 認証サーバ DBName -DB IDa-DB IDb-DB
実装環境 実装マシン (aero.e-care-project.jp) OS 言語 データベース FreeBSD 4.5-RELEASE #1 言語 C言語 データベース PostgreSQL
実装 認証サーバ側 動作 認証要求メッセージを受信 メッセージ内からidとtypeを抽出 typeを元にID情報格納場所の検索 IDを元にUser-IDを取得 認証応答メッセージとしてUser-IDを送信 SELECT dbname from typedb WHERE type = “test”; SELECT userid from idlist where id = “testidchar”;
実装 int IDtoUserID(char *buf) クライアント側から受け取ったtype+IDの文字列を‘+’で分割する typeDBからID場所の検索 SQL文を発行 上で得た情報を元にIDからUser-IDを検索 User-IDをクライアントに送信 失敗したらnullを送信
実装 認証サーバ側 int requestDB(struct *dbinfo, char *sql, char *answer) DBの接続 IDtoUserID()で使う
実装 アプリケーション側 API int AuthID (char *host, char *type+id) 認証のための関数 返り値をもとに処理 値がある・・・char *type+idに入れて返り値は0 値がない・・・何もせずに返り値は-1
ID test+testidchar test+testtest デモ アプリケーション ID test+testidchar test+testtest User-ID 0001 ‘\0’ 認証モジュール NameDB IDa-DB IDb-DB
まとめ できたこと 今後 アプリケーションから認証部分の切り離し User-IDによる人物の特定 まだ考えるべきところはある データのモデル プロトコルの仕様策定