JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11 セキュリティーサービス開発ガイド     Oracle Solaris 11.1 Information Library (日本語)
このドキュメントの評価
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Oracle Solaris の開発者向けセキュリティー機能 (概要)

2.  特権付きアプリケーションの開発

3.  PAM アプリケーションおよび PAM サービスの記述

4.  GSS-API を使用するアプリケーションの記述

5.  GSS-API クライアント例

6.  GSS-API サーバー例

7.  SASL を使用するアプリケーションの記述

簡易認証セキュリティー層 (SASL) の紹介

SASL ライブラリの基本

SASL アーキテクチャー

セキュリティー機構

SASL セキュリティー強度係数 (SSF)

SASL における通信

SASL 接続コンテキスト

SASL サイクル内のステップ

libsasl の初期化

SASL セッションの初期化

SASL 認証

SASL の機密性と整合性

SASL セッションの解放

libsasl のクリーンアップ

SASL の例

サービスプロバイダ用の SASL

SASL プラグインの概要

SASL プラグインに関する重要な構造体

クライアントプラグイン

サーバープラグイン

ユーザー標準化プラグイン

補助プロパティー (auxprop) プラグイン

SASL プラグイン開発のガイドライン

SASL プラグインにおけるエラーレポート

SASL プラグインにおけるメモリー割り当て

SASL 折衝順序の設定

8.  Oracle Solaris 暗号化フレームワークの紹介

9.  ユーザーレベルの暗号化アプリケーションの記述

10.  Oracle Solaris 鍵管理フレームワークの紹介

A.  開発者のためのセキュアコーディングガイドライン

B.  C ベース の GSS-API プログラム例

C.  GSS-API リファレンス

D.  OID の指定

E.  SASL ソースコード例

F.  SASL リファレンス

用語集

索引

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

SASL の例

このセクションでは、クライアントアプリケーションとサーバーアプリケーションの間における一般的な SASL セッションを示します。この例の実行手順は次のとおりです。

  1. クライアントアプリケーションは libsasl を初期化します。

    クライアントアプリケーションは次の大域コールバックを設定します。

    • SASL_CB_GETREALM

    • SASL_CB_USER

    • SASL_CB_AUTHNAME

    • SASL_CB_PASS

    • SASL_CB_GETPATH

    • SASL_CB_LIST_END

  2. サーバーアプリケーションは libsasl を初期化します。

    サーバーアプリケーションは次の大域コールバックを設定します。

    • SASL_CB_LOG

    • SASL_CB_LIST_END

  3. クライアントは、SASL 接続コンテキストを作成し、セキュリティープロパティーを設定し、利用可能な機構のリストをサーバーに要求します。

  4. サーバーは、SASL 接続コンテキストを作成し、セキュリティープロパティーを設定し、適切な SASL 機構のリストを取得し、それをクライアントに送信します。

  5. クライアントは、利用可能な機構のリストを取得し、特定の機構を選択し、その選択した機構と認証データをサーバーに送信します。

  6. 続いて、クライアントとサーバーは、認証とセキュリティー層の折衝が完了するまで、SASL データを交換します。

  7. 認証が完了すると、クライアントとサーバーは、セキュリティー層の折衝が行われたどうかを判断します。クライアントはテストメッセージをエンコードします。そのメッセージがサーバーに送信されます。サーバーは、認証ユーザーのユーザー名とそのユーザーのレルムも決定します。

  8. サーバーは、エンコードされたメッセージを受信、デコード、および出力します。

  9. クライアントは、sasl_dispose() を呼び出してクライアントの SASL 接続コンテキストを解放します。続いてクライアントは、sasl_done() を呼び出して libsasl のリソースを解放します。

  10. サーバーは、sasl_dispose() を呼び出してそのクライアントの接続コンテキストを解放します。

次に、クライアントとサーバー間のやり取りの様子を示します。libsasl への呼び出しが発生するたびにその呼び出し内容が表示されています。送信側および受信側によるそれぞれのデータ転送も表示されています。なお、データはエンコードされた形式で表示され、その先頭に転送元が示されています。転送元がクライアントの場合は C:、サーバーの場合は S: と表示されます。両アプリケーションのソースコードについては、付録 E SASL ソースコード例を参照してください。

クライアント
% doc-sample-client
*** Calling sasl_client_init() to\
initialize libsasl for client use ***
*** Calling sasl_client_new() to\
create client SASL connection context ***
*** Calling sasl_setprop() to\
set sasl context security properties ***
Waiting for mechanism list from\
server...
サーバー
% doc-sample-server digest-md5
*** Calling sasl_server_init() to\
initialize libsasl for server use ***
*** Calling sasl_server_new() to\
create server SASL connection context ***
*** Calling sasl_setprop() to\
set sasl context security properties ***
Forcing use of mechanism digest-md5
Sending list of 1 mechanism(s)
S: ZGlnZXN0LW1kNQ==
クライアント
S: ZGlnZXN0LW1kNQ==
received 10 byte message
got 'digest-md5'
Choosing best mechanism from: digest-md5
*** Calling sasl_client_start() ***
Using mechanism DIGEST-MD5
Sending initial response...
C: RElHRVNULU1ENQ==
Waiting for server reply...
サーバー
C: RElHRVNULU1ENQ==
got 'DIGEST-MD5'
*** Calling sasl_server_start() ***
Sending response...
S: bm9uY2U9IklicGxhRHJZNE4Z1gyVm5lQzl5M\
TZOYWxUOVcvanUrcmp5YmRqaHMsbT0iam0xMTQx\
NDIiLHFvcD0iYXV0aCxhdXRoLWludCxhdXRoLWN\
vbmYiLGNpcGhlcj0icQwLHJjNC01NixyYzQiLG1\
heGJ1Zj0yMDQ4LGNoYXJzZXQ9dXRmLTgsYWxnb3\
JpdGhtPW1kXNz
Waiting for client reply...
クライアント
S: bm9uY2U9IklicGxhRHJZNE4Z1gyV\
m5lQzl5MTZOYWxUOVcvanUrcmp5YmRqaHMsbT0i\
am0xMTQxNDIiLHFvcD0iYXV0aCxhdXRoLWludCx\
hdXRoLWNvbmYiLGNpcGhlcj0icQwLHJjNC01Nix\
yYzQiLG1heGJ1Zj0yMDQ4LGNoYXJzZXQ9dXRmLT\
gsYWxnb3JpdGhtPW1kXNz
received 171 byte message
got 'nonce="IbplaDrY4N4szhgX2VneC9y16Na\
lT9W/ju+rjybdjhs=", realm="jm114142",\
qop="auth,auth-int,auth-conf",cipher="rc4-40,\
rc4-56, rc4",maxbuf=2048,charset=utf-8,\
algorithm=md5-sess'
*** Calling sasl_client_step() ***
Please enter your authorization name : zzzz
Please enter your authentication name : zzzz
Please enter your password : zz
*** Calling sasl_client_step() ***
Sending response...
C: dXNlcm5hbWU9Inp6enoiLHJlYWxtPSJqbTEx\
NDE0MiIsbm9uY2U9IklicGxhRHJZNE4yVm5lQzl\
5MTZOYWxUOVcvanUrcmp5YmRqaHM9Iixjbm9uY2\
U9InlqZ2hMVmhjRFJMa0FobtDS0p2WVUxMUM4V1\
NycjJVWm5IR2Vkclk9IixuYz0wMDAwMDAwMSxxb\
3A9YXV0aC1jb25mGhlcj0icmM0IixtYXhidWY9M\
jA0OCxkaWdlc3QtdXJpPSJyY21kLyIscmVzcG9u\
c2U9OTYODI1MmRmNzY4YTJjYzkxYjJjZDMyYTk0\
ZWM=
Waiting for server reply...
サーバー
C: dXNlcm5hbWU9Inp6enoiLHJlYWxt\
PSJqbTExNDE0MiIsbm9uY2U9IklicGxhRHJZNE4\
yVm5lQzl5MTZOYWxUOVcvanUrcmp5YmRqaHM9Ii\
xjbm9uY2U9InlqZ2hMVmhjRFJMa0FobtDS0p2WV\
UxMUM4V1NycjJVWm5IR2Vkclk9IixuYz0wMDAwM\
DAwMSxxb3A9YXV0aC1jb25mGhlcj0icmM0IixtY\
XhidWY9MjA0OCxkaWdlc3QtdXJpPSJyY21kLyIs\
cmVzcG9uc2U9OTYODI1MmRmNzY4YTJjYzkxYjJj\
ZDMyYTk0ZWM=
got 'username="zzzz",realm="jm114142",\
nonce="IbplaDrY4N4szhgX2VneC9y16NalT9W/\
ju+rjybdjhs=", cnonce="yjghLVhcDRLkAhoi\
rwKCKJvYU11C8WSrr2UZnHGedrY=", nc=00000001,\
qop=auth-conf,cipher="rc4",maxbuf=2048,\
digest-uri="rcmd/", response=966e978252\
df768a2cc91b2cd32a94ec'
*** Calling sasl_server_step() ***
Sending response...
S: cnNwYXV0aD0yYjEzMzRjYzU4NTE4MTEwOWM3\
OTdhMjUwYjkwMzk3OQ==
Waiting for client reply...
クライアント
S: cnNwYXV0aD0yYjEzMzRjYzU4NTE4\
MTEwOWM3OTdhMjUwYjkwMzk3OQ==
received 40 byte message
got 'rspauth=2b1334cc585181109c797a250b903979'
*** Calling sasl_client_step() ***
C:
Negotiation complete
*** Calling sasl_getprop() ***
Username: zzzz
SSF: 128
Waiting for encoded message...
サーバー
Waiting for client reply... 
C: got '' *** Calling sasl_server_step() *** 
Negotiation complete 
*** Calling sasl_getprop() to get username,\
realm, ssf *** 
Username: zzzz 
Realm: 22c38 
SSF: 128 
*** Calling sasl_encode() *** sending encrypted\
message 'srv message 1'
S: AAAAHvArjnAvDFuMBqAAxkqdumzJB6VD1oaj\
iwABAAAAAA==
クライアント
S: AAAAHvArjnAvDFuMBqAAxkqdumzJ\
B6VD1oajiwABAAAAAA==
received 34 byte message
got ''
*** Calling sasl_decode() ***
received decoded message 'srv message 1'
*** Calling sasl_encode() ***
sending encrypted message 'client message 1'
C: AAAAIRdkTEMYOn9X4NXkxPc3OTFvAZUnLbZA\
Nqzn6gABAAAAAA==
*** Calling sasl_dispose() to release client\
SASL connection context ***
*** Calling sasl_done() to release libsasl \
resources ***
サーバー
Waiting for encrypted message...
C: AAAAIRdkTEMYOn9X4NXkxPc3OTFvAZUnLbZA\
Nqzn6gABAAAAAA==
got ''
*** Calling sasl_decode() ***
received decoded message 'client message 1'
*** Calling sasl_dispose() to release \
client SASL connection context ***