これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド dacsauth です。
プログラム:
NAME
dacsauth - 認証チェック
SYNOPSIS
ダックス認証 [-m 認証モジュール仕様][...][-r 役割モジュール仕様][...][-D指令=値]
[-aux]
[-J F 姓名] [-fn フェッドネーム] [-h | -助けて] [id] [-NS log_level]
[-p password]
[-pf file] [-促す] [-q] [{-u | -ユーザー} ユーザ名] [-v]
dacsauth モジュール
DESCRIPTION
このプログラムはの一部です DACS 上。
ダックス認証 ユーティリティは、指定された認証マテリアルが認証を満たすかどうかをテストします。
要件を確認し、プロセスの終了ステータスを通じて結果を示します。 に似ています
dacs_authenticate(8)[1]と 壊れた(1)[2]。
ダックス認証 スクリプトや他のプログラムが DACS 認証
インフラストラクチャー。 彼らは、成功した認証を大まかな形式として使用する可能性があります。
認可; 正しいパスワードを提供したユーザーのみが実行を許可される場合があります。
たとえばプログラム。 または、成功後に何らかの種類の資格情報を返す可能性があります。
認証、またはおそらく使用 dacs_auth_agent(8)[3] 戻る DACS 資格情報。
ダックス認証 特定のユーザーに関連付けられたロール情報を取得するために使用することもできます。
ダックス認証 何も読みません DACS 設定ファイル。 テストの実行に必要なものすべて
引数として指定する必要があります。
先端
If ダックス認証 組み込みモジュールを使用して認証を実行するか、役割を検索します。 いいえ
コンポーネント is の提出が必要です。 これは、使用できることを意味します ダックス認証 せずに
Apache を含む Web サーバーにアクセスしたり、設定したりすることもできます。
OPTIONS
次のコマンド ライン フラグが認識されます。 少なくとも一つの -m フラグ(実行するため)
認証テスト)、または少なくとも XNUMX つ -r フラグを指定する必要があります(ロールを形成するには)
ID の記述子文字列を取得し、それを標準出力に出力します)。 両方のフラグの組み合わせは次のようになります。
許可されます。この場合、ロール記述子文字列は、認証テストが成功した場合にのみ出力されます。
成功です。
-D指令=値
これは設定に相当します 指令、一般的な DACS 構成ディレクティブ、へ
値。 見る dacs.conf(5)[4]。
-aux
によって提供される次の文字列 -p, -pfまたは -促す フラグはの値になります
補助 認証引数。 これにより、機密情報を安全に渡す方法が提供されます。
PIN などの補助情報をプログラムに追加します。 パスワードを取得するためのフラグ、
存在する場合は、コマンドラインでこのフラグの前に置く必要があります。
-J F 姓名
姓名、管轄区域名として構文的に有効である必要があります。 もし必要なら
指定されていない場合は、ホストのドメイン名から派生した値が使用されます。
-fn フェッドネーム
フェッドネーム、フェデレーション名として構文的に有効である必要があります。 もし必要なら
指定されていない場合は、ホストのドメイン名から派生した値が使用されます。
-h
-助けて
ヘルプメッセージを表示して終了します。
id
成功した場合は、認証されたメッセージを印刷します。 DACS 標準出力へのアイデンティティ。
-NS log_level
デバッグ出力レベルをに設定します log_level (参照してください ダックス(1)[5])。 デフォルトのレベルは
警告します。
-m 認証モジュール仕様
必要な各タイプの認証テストは、 認証モジュール仕様
すぐに続くのは -m フラグ。 それぞれ 認証モジュール仕様 本質的には
の代替表現 認証 句[6] とそのディレクティブ。
dacs_authenticate(8)[1]。 Auth 句が現れる順序と同じように、 DACS
構成ファイルの順序 -m 表示されるフラグは重要である可能性があります。
に応じて コントロール キーワード。 処理中に、連続して -m コンポーネントは
自動的に割り当てられる名前、auth_module_1、auth_module_2 など、主に
エラー報告の目的。
An 認証モジュール仕様 構文は次のとおりです。
モジュール 組み込みモジュールの名前または有効な略語で始まる
その、または外部認証モジュールの (絶対) URL (
URL[7] ディレクティブ)。 次に、認識された認証スタイルのキーワードが表示される必要があります
指定子 ( スタイル[8] ディレクティブ)。 次に、 コントロール キーワードが続きます、
これは CONTROL[9] Auth 節のディレクティブ。 後に コントロール
キーワードの後に、以下で説明するフラグを任意の順序で続けることができます。
An 認証モジュール仕様 最初の無効なフラグ (またはフラグの終わり) が終了すると終了します。
遭遇した。
-O フラグは、 オプション[10] 指令。
-の flag の後には、読み取るファイルの名前を示す引数が続きます。
オプションを XNUMX 行に XNUMX つずつ、形式で指定します。 名=値。 空白行とで始まる行
「#」は無視されます。 これらの行は「-O」で始まっておらず、引用符は単なる引用符であることに注意してください。
コピーされ、解釈されません。 の -の フラグを使用してパスワードの設定を回避できます
コマンド ラインを使用すると、他の方法では必要な式を簡単に作成できるようになります。
たとえば、シェルによる解釈を防ぐために慎重にエスケープする必要があります。
-expr フラグは、 exp[11] ディレクティブ。 の -vfs フラグは
configure Vfs[12] このモジュールに必要なディレクティブ。
-モジュール
組み込みの認証モジュールと役割モジュールのリストを XNUMX 行に XNUMX つずつ表示します。
その後終了します。 正規のモジュール名が出力され、その後に XNUMX 個以上の同等の名前が続きます。
略語。 認証モジュールの場合、認証スタイルが表示されます。 一覧へ
利用可能なモジュールを確認するには、次のコマンドを実行します。
% dacsauth -モジュール
利用可能な (有効な) 組み込み認証および役割モジュールのセットが決定されます。
いつ DACS が建てられています。
-p password
使用するパスワードを指定します( PASSWORD への議論
dacs_authenticate).
セキュリティ
コマンドラインで指定されたパスワードは、同じシステム上で他のユーザーに表示される可能性があります。
システム。
-pf file
使用するパスワードを読み取ってください file (に相当 PASSWORD への議論
dacs_authenticate) もし file 「-」の場合、パスワードは標準入力から読み取られます
プロンプトなし。
-促す
パスワードの入力を求め、標準入力から読み取ります ( PASSWORD への議論
dacs_authenticate)。 パスワードはエコーされません。
-q
デバッグ出力レベルを下げることで、より静かになります。
-r 役割モジュール仕様
役割 ユーザ名 このフラグを与えることで判断できます。
続いて 役割モジュール仕様を選択します。 -r フラグは繰り返すことができ、その結果の役割は
が組み合わされています。 それぞれ 役割モジュール仕様 本質的には の代替表現です
によって使用されるロール句 dacs_authenticate(8)[13]。 歴代 -r コンポーネントは
割り当てられた名前、roles_module_1、roles_module_2 など (主にエラー報告用)
目的。
A 役割モジュール仕様 構文は次のとおりです。
モジュール コンポーネントは、Roles 句の URL[14] ディレクティブとは
利用可能な組み込み役割モジュールの名前、その有効な省略形、
または外部役割モジュールの (絶対) URL。
フラグは以下に続く場合があります モジュール コンポーネントを任意の順序で入力します。 あ 役割モジュール仕様 いつ終了しますか
最初の無効なフラグ (またはフラグの終わり) に遭遇した場合。
-O フラグは、 オプション[10] 指令。
-の flag の後には、読み取るファイルの名前を示す引数が続きます。
オプションを XNUMX 行に XNUMX つずつ、形式で指定します。 名=値。 空白行とで始まる行
「#」は無視されます。 これらの行は「-O」で始まっておらず、引用符は単なる引用符であることに注意してください。
コピーされ、解釈されません。 の -の フラグを使用してパスワードの設定を回避できます
コマンド ラインを使用すると、他の方法では必要な式を簡単に作成できるようになります。
たとえば、シェルによる解釈を防ぐために慎重にエスケープする必要があります。
-expr フラグは、 exp[11] ディレクティブ。 の -vfs フラグは
configure Vfs[12] によって要求されるディレクティブ モジュール.
-u ユーザ名
-ユーザー ユーザ名
認証するユーザー名 ( USERNAME への議論
dacs_authenticate)。 このユーザー名は、有効なユーザー名に暗黙的に関連付けられています。
連合と管轄区域 (を参照) -fn[15]と -J F[16] フラグ)。
-v
-v フラグは、デバッグまたは(繰り返される場合)トレースするためにデバッグ出力レベルを上げます。
例
セキュリティ
If ダックス認証 組み込みモジュールを使用して認証を実行するには、setuid または
setgid を使用して、必要なパスワード ファイルにアクセスするための十分な権限を取得します (同じ
組み込みの役割モジュールの場合は当てはまります)。 外部モジュールを使用する場合、そのモジュールは
アクセスするのに十分な権限で実行する必要がある DACS 暗号化キー、
具体的には federation_keys とおそらく DACS またはシステムパスワードファイル。 外部の
モジュールは、モジュールに含まれるファイルにアクセスするのに十分な権限で実行する必要があります。
必要です。
必ず、ご使用のフェデレーションに正しい federation_keys を使用してください。 参照する
XNUMX つ以上のフェデレーション内の認証モジュールはおそらく機能しません。
ダックス認証 したがって、通常は、それを呼び出すユーザーの UID として実行すべきではありません。
(root でない限り) 情報にアクセスできなくなるため
それは必要です。 これにより、ユーザーの「不正行為」(たとえば、
デバッガでモジュールを実行します)。
この例では、ユーザー「bobo」をパスワード「test」で認証します。 DACS パスワードファイル
/usr/local/dacs/conf/passwd:
% dacsauth -m passwd パスワードが必要です
-vfs "[passwds]dacs-kwv-fs:/usr/local/dacs/conf/passwd" -q -u bobo -p test
コマンドの終了ステータスが XNUMX の場合、認証テストは成功しました。それ以外の場合は、認証テストが成功しました。
失敗しました。
次の例では、Unix パスワード ファイルに対して「bobo」を認証しようとします。 の
プログラムはパスワードの入力を求めます。
% dacsauth -m unix passwd が必要です -u bobo -prompt
次の例では、 ダックス認証 NTLM 経由で「bobo」を認証しようとします。
Winders.example.com:
% dacsauth -m ntlm passwd suff -OSAMBA_SERVER="winders.example.com" -prompt -u bobo
この例は、外部認証モジュールを使用することを除いて、前の例と似ています。
が使用され、パスワードはファイルから読み取られます。 外部モジュールのため、追加の
構成を提供する必要があります。 特に、federation_keys の場所と
連合名と管轄区名を指定する必要があります。
% dacsauth -m https://example.example.com/cgi-bin/dacs/local_ntlm_authenticate \
passwd で十分です -OSAMBA_SERVER="winders.example.com" \
-fn 例 -fj FEDROOT -u bobo -pf mypass \
-DVFS="[federation_keys]dacs-fs:/usr/local/dacs/federations/example/federation_keys"
に対して認証するには、 でログイン[17]アカウント [メール保護]、次のように使用できます。
% dacsauth -m http passwd suff \
-OAUTH_URL="https://www.google.com/accounts/ClientLogin" \
-OUSERNAME_PARAMETER=メール -OPASSWORD_PARAMETER=パスワード \
-Oservice=xapi -Osource=DSS-DACS-1.4 -prompt -u [メール保護]
次の例では、式が評価されて認証かどうかが判断されます。
成功するはずです。 ユーザー (「bobo」) はパスワードの入力を求められます。 文字列「foo」が
認証が成功するかどうかを指定します。 より現実的な例では、別のプログラムを呼び出して、
たとえば、決定を下すのに役立ちます。
% dacsauth -m expr expr サフィ \
-expr '${Args::PASSWORD} eq "foo" ? ${Args::USERNAME} : ""' -user bobo -prompt
Apache に対する認証 htダイジェスト パスワードファイルは次のように実行されます
たとえば、パスワードが標準入力から読み取られる場合:
% エコー "テスト" | dacsauth -m apache ダイジェストで十分です \
-OAUTH_MODULE=mod_auth_digest \
-OAUTH_FILE=/usr/local/apache2/conf/passwords.digest \
-OAUTH_REALM="DACS ダイジェスト認証領域" \
-u ボボ -pf -
PAM モジュールを介した認証は、他のモジュールとは動作が異なります。
使い方が複雑 - なぜなら ダックス認証 内容に応じて、複数回実行する必要がある場合があります
PAM が必要とする情報。 はい/いいえの決定を返す代わりに、 ダックス認証 印刷するかもしれない
標準出力への詳細情報のプロンプトが表示されます。 に示されている操作の詳細を確認してください。
dacs_authenticate(8)[18]と パムド(8)[19] このモジュールを使用する前に。
次の例は、コマンド ラインからのモジュールの使用を示しています。 一度基本を
アイデアが理解できれば、実行するためのスクリプトの書き方が明らかになるはずです。
必要な反復。 パスなどの例の詳細は、調整が必要な場合があります。
あなたの環境。 この例では、最初はユーザー名が指定されていないことに注意してください。
ダックス認証 実行されますが、知られていれば実行される可能性があります。
% dacsauth -m pam は十分な入力を求められます \
-vfs "[federation_keys]dacs-fs:/usr/local/dacs/federations/dss/federation_keys" \
-OPAMD_HOST=localhost -OPAMD_PORT=dacs-pamd -fj 例 -fn テスト
AUTH_PROMPT_VAR1="ログイン:"
AUTH_TRANSID="10.0.0.124:57849:85748:9997c5588a6239e3"
% dacsauth -m pam は十分な入力を求められます \
-vfs "[federation_keys]dacs-fs:/usr/local/dacs/federations/dss/federation_keys" \
-OAUTH_PROMPT_VAR1="ボボ" \
-OAUTH_TRANSID="10.0.0.124:57849:85748:9997c5588a6239e3"-fj EXAMPLE -fn TEST
AUTH_PROMPT_VAR2="パスワード:"
AUTH_TRANSID="10.0.0.124:52188:88417:5ffb0015f21ea546"
% dacsauth -m pam は十分な入力を求められます \
-vfs "[federation_keys]dacs-fs:/usr/local/dacs/federations/dss/federation_keys" \
-OAUTH_PROMPT_VAR2="パスワード" \
-OAUTH_TRANSID="10.0.0.124:57849:85748:9997c5588a6239e3"-fj EXAMPLE -fn TEST
初めて ダックス認証 例で実行すると、ユーザー名のプロンプトが返されます
("Login:") トランザクション変数に関連付けられています AUTH_PROMPT_VAR1 フォルダーとその下に
トランザクション識別子 (AUTH_TRANSID)。 後者は後続に渡される必要があります
の処刑 ダックス認証。 の XNUMX 回目の実行 ダックス認証 ユーザー名 (「bobo」) を渡し、
トランザクション変数に関連付けられた別のプロンプト (「パスワード:」) を返します。
AUTH_PROMPT_VAR2。 XNUMX 回目の実行ではパスワード (「apassword」) が渡されますが、プロンプトは表示されません。
セッションが完了し、プログラムの終了ステータスが反映されていることを示します。
認証の結果。
先端
かどうか ダックス認証 ロールを取得するには、特定のロールに応じてパスワードが必要です
使用されているモジュール。 たとえば、パスワードは必要ありません。 local_unix_roles[20]または
ローカルの役割[21] 役割を獲得するためですが、 local_ldap_roles[22] にはおそらく
ディレクトリにバインドしてロールを取得するためのパスワード。
この例では、組み込み関数を呼び出して、ユーザー「bobo」のロール文字列を出力します。
local_unix_roles[20]モジュール:
% dacsauth -r unix -u bobo
ボボ、ホイール、www、ユーザー
次の例は、外部の役割モジュールが使用されている点を除いて、前の例と似ています。
% dacsauth -r https://example.example.com/cgi-bin/dacs/local_unix_roles \
-DVFS="[federation_keys]dacs-fs:/usr/local/dacs/federations/federation_keys" \
-fn 例 -u ボボ
ボボ、ホイール、www、ユーザー
外部役割モジュールは、実行されているホストとは異なるホストで実行される可能性があります。
ダックス認証。 提供された ダックス認証 がインストールされており、一致する federation_keys ファイルが存在します。
ローカル ホストで利用できる場合、ローカル ホストは DACS 管轄権がある、または何らかの権限を持っている
他の DACS 構成。
次の例では、 役割 文字列[23] ユーザー「bobo」の場合、
(外部) を使用して、共通名「Bobo Baggins」のディレクトリ local_ldap_roles【22]
モジュールと「直接」バインディング メソッド:
% dacsauth -r https://example.example.com/cgi-bin/dacs/local_ldap_roles \
-/usr/local/dacs/ldap_roles_options_direct -u "ボボ バギンズ" \
-DVFS="[federation_keys]dacs-fs:/usr/local/dacs/federations/federation_keys" \
-fn 例 -fj FEDROOT -prompt
DnsAdmins、Print_Operators、Domain_Admins、Administrators
コマンドラインに簡単かつ正確に配置するにはフラグが多すぎるため、
これを行うために必要なオプションは、 -の フラグ。
これにより、プログラムにパスワードを渡すためのより安全な方法も提供されます。 確実にアクセスできるようにする
ファイルへのアクセスは適切に制限されます。 ファイル
/usr/local/dacs/ldap_roles_options_direct には、次のような構成が含まれる場合があります。
LDAP_BIND_METHOD=直接
LDAP_ADMIN_URL*="ldap://winders.example.com/CN=" 。 encode(url,${Args::DACS_USERNAME}) 。 ",CN=ユーザー,DC=例,DC=com"
LDAP_ROLES_SELECTOR*="${LDAP::attrname}" eq "memberOf" ? strtr(ldap(rdn_attrvalue, \
ldap(dn_index, "${LDAP::attrvalue}", 1)), " ", "_") : ""
次の例は、「間接」バインディングを使用することを除いて、前の例と似ています。
メソッドなので、ユーザーの共通名を指定する必要はありません。
% dacsauth -r https://example.example.com/cgi-bin/dacs/local_ldap_roles \
-/usr/local/dacs/ldap_roles_options_indirect -u bobo \
-DVFS="[federation_keys]dacs-fs:/usr/local/dacs/federations/federation_keys" \
-fn 例 -fj FEDROOT -p bobospassword
DnsAdmins、Print_Operators、Domain_Admins、Administrators
ファイル /usr/local/dacs/ldap_roles_options_indirect には、次のような構成が含まれる場合があります。
この:
LDAP_BIND_METHOD=間接的
LDAP_ADMIN_URL=ldap://winders.example.com/CN=管理者,CN=ユーザー,DC=example,DC=com
# ユーザーの下で検索...
LDAP_SEARCH_ROOT_DN=CN=ユーザー、DC=例、DC=com
LDAP_ADMIN_PASSWORD=シークレット管理者のパスワード
LDAP_SEARCH_FILTER*="(sAMAccountName=${Args::DACS_USERNAME})"
LDAP_ROLES_SELECTOR*="${LDAP::attrname}" eq "memberOf" ? strtr(ldap(rdn_attrvalue, \
ldap(dn_index, "${LDAP::attrvalue}", 1)), " ", "_") : ""
を使用したいとします。 ダックス認証 次のような方法で LDAP 経由でユーザーを認証します。
この dacs.conf 構成:
URL「http://example.example.com/cgi-bin/dacs/local_ldap_authenticate"
スタイル「パスワード、役割の追加」
コントロール「必須」
LDAP_BIND_METHOD「直接」
LDAP_USERNAME_URL* '"ldap://winders.example.com/cn=" . encode(url, ${Args::USERNAME}) 。 ",cn=ユーザー,dc=例,dc=ローカル"'
LDAP_USERNAME_EXPR* '"${LDAP::sAMAccountName}"'
LDAP_ROLES_SELECTOR* '"${LDAP::attrname}" eq "memberOf" \
? strtr(ldap(rdn_attrvalue, ldap(dn_index, "${LDAP::attrvalue}", 1)), " ", "_") : ""'
このようなファイル (例: /usr/local/dacs/ldap_auth_options_direct) には、
次の指令:
LDAP_BIND_METHOD=直接
LDAP_USERNAME_URL*="ldap://winders.example.com/cn=" 。 encode(url, ${Args::USERNAME}) 。 ",cn=ユーザー,dc=例,dc=ローカル"
LDAP_USERNAME_EXPR*="${LDAP::sAMアカウント名}"
LDAP_ROLES_SELECTOR*="${LDAP::attrname}" eq "memberOf" \
? strtr(ldap(rdn_attrvalue, ldap(dn_index, "${LDAP::attrvalue}", 1)), " ", "_") : ""
次に、次のようなコマンドを使用して認証を実行できます。
% dacsauth -fj FEDROOT -m http://example.example.com/cgi-bin/dacs/local_ldap_authenticate パスワードサフ\
-/usr/local/dacs/ldap_auth_options_direct \
-DVFS="[federation_keys]dacs-fs:/usr/local/dacs/federations/federation_keys" \
-fn 例 -u bobo -prompt
診断
プログラムは、認証が成功した場合は 0 で終了し、認証が失敗した場合は 1 で終了します。
エラーが発生しました。
onworks.net サービスを使用してオンラインで dacsauth を使用する