共有ホルダにアクセスしたときに認証ダイアログボックスを必ず表示させたい
-
2011年7月4日 10:41
クライアント側からWindowsサーバー上の共有ホルダーをアクセスしたときに、
必ず認証ダイアログボックス表示させる クライアント側のスクリプトを探しています。
NET USE \\共有名 /USER: taro
のスクリプトが 要求に近いのですが、
①パスワードを インラインで管理したくない (多くのユーザーに操作してもらうので)
②コマンドラインではなく認証ダイアログを表示させたい。(同じく 慣れないユーザーも多いので)
などの理由で NET USEは躊躇しております。
できればNETでのプログラムかPowerShellで実現したいのですが 無理でしょうか?
すべての返信
-
2011年7月4日 23:43
「必ず」とは、どの程度のタイミングを指しているのでしょうか?
たとえば、完全に認証情報が存在しない状態だと、
- 共有フォルダのショートカットを選択して、エクスプローラでフォルダを表示
- そこにあるWORDのドキュメントファイルを選択してダブルクリック
という操作で3度か4度程度のパスワード入力が求められますが、これは期待した動作ですか?
-
2011年7月7日 0:25
■説明不足ですみませんでした。
おっしゃるように通常のアクセスではGUIの認証画面が正常に出ますが下記の(1)のケースのように認証画面が出ずに ”接続不能“と報告されてしまうアプリがあり、対策を考えていました。さらに(2)のケースのように、一度成立した認証を破棄し別名でログオンしたいケースが発生しています。■いずれにせよ、接続を開始した時点で、意図したタイミングで確実に認証をすすめるための対策を考えています。
(1) アプリケーションから直接共有ホルダーにアクセスしたときに認証ダイアログボックスが出ずに、”接続不能”と出るケースがある。
(2) ユーザー名を変えて、共有資源にアクセスしたいケースがある。(認証済みだと、別名でアクセスできない)
■望む動作
NET USE \\共有名 /USER: taro
などを発行したときに、 コマンドラインではなく明示的にGUIの認証ダイアログボックスがてててれることを 望んでいます。
(NET USEは前述のようにコマンドラインの問題があります)
■マイクロソフトの認証の不思議
マイクロソフトの認証は 過去の認証がキャッシュされ、思ったタイミング認証ダイアログが発生しなかったり。
共有資源に対して別名でアクセスしたいときも、過去の認証を取り消せないなど、いろいろと困っています。
■別手段ですが
一度過去の認証をコマンドラインにて明示的にリセットする方法でもかまいません。
■少し込み入っていますが、ご教示いただければ幸いです。 -
2011年7月7日 0:42
> 認証ダイアログボックスが出ずに、”接続不能”と出るケースがある。
ケースがあるですか? アプリケーションがあるですか?
特定のアプリケーションが認証ダイアログを出さない場合、認証エラーと接続エラーを同一視しているというアプリケーション側の不具合であるか仕様であると考えられます。
出たり出なかったりする場合、接続キャッシュがあやしいですね。
> マイクロソフトの認証は 過去の認証がキャッシュされ、思ったタイミング認証ダイアログが発生しなかったり。
このあたりは、ユーザビリティが最も高い方法を考えてやっているのでしょうね。おおむね、現在の挙動はほとんどのユーザで好ましく動作するのではないかと思えます。(不用意に Wnidows アカウントを複数の権限者で共有したりすると、かなり困ったことになりますが、それはファイル共有に限ったことではなくて、もっと広い範囲に問題が発生していて、たまたまファイル共有が目先になるだけではないか、と思います。)
> 一度過去の認証をコマンドラインにて明示的にリセットする方法でもかまいません。
net use * /delete ではだめですか?
-
2011年7月7日 16:19
ありがとうございます。■認証エラーと接続エラーを混同しているアプリケーションがある。
確かにアプリケーション開発者がネットワーク認証エラーを意識せずに
接続エラーとしてはじいている可能性があります.
以前にどうしようもなくなって、あらかじめNET USEコマンドを実行しておいて
事前認証をすますことにより、認証エラーを回避したことを思い出しました。
■Kerberos認証と認証チケットの有効期限本日いろいろ調べていて、認証チケットの有効期限というキーワードに出会いました
http://www.atmarkit.co.jp/fwin2k/keyword/kerberos/kerberos.html
思ったような接続ができないのは 認証チケットがキャッシュされていることに関係がある可能性があります。
■Kilist purge コマンド (コマンドラインのツール)
http://itpro.nikkeibp.co.jp/article/Windows/20051013/222754/認証Ticketを Purgeする方法を見つけました。Win7では使えます
Klist :現在発行されているチケットを調べる
Klist purge:チケットをパージする。■少しこちらでも調べてみます。
ヒントをいろいろ与えていただいて感謝
-
2011年7月7日 23:01
自己レスです
プログラムから明示的に接続・切断を行うには
Win32APIを使う方法があることがわかりました。(2)に注目
こちらも試してみます。
(1)ネットワークドライブの接続をプログラムから行う
http://blog.livedoor.jp/akf0/archives/51451199.html(2)Win32APIを使った接続; WNET(Windows NETWORK)
http://msdn.microsoft.com/ja-jp/library/cc446965.aspx(3)ネットワークドライブの割り当て方法(定番)
http://pcsupport.happy-ritaiya.net/2008/01/post_49.php定番の(3の)方法も悪くはありませんが、ドライブ名を指定しなければならないのがやっかい
ユーザーによってはドライブ名の強豪が起きる

