- PR -

クライアント情報の取得

投稿者投稿内容
おっきー
大ベテラン
会議室デビュー日: 2003/05/01
投稿数: 104
投稿日時: 2005-07-08 19:37
引用:

・何より余計な手間が増える嫌がられる ( 全社員 ( 4000人? ) が使用出来るシステムなので )
( いや、ログインは大事な機能なんですけどね。 PC に詳しく無い人もやっぱりいるので。。。 )


同時に4000人だとBASIC認証はきついかもしれませんが・・・。

引用:

・これは想定なのですが、ログイン機能の追加、って事は「このセッションの ID のユーザ名は○○」などの情報を
持ちまわる必要があるんですよね?
その機能 ( 持ち回る ) が現在無いので、そうすると全ページに情報持ち回りロジックを書くのかなぁ、と。。。
( 認識違っていますか? )

なので、個人的にもログイン機能はつけたいのですが、実現は難しそうです。



セッション管理と認証は別物と考えてください。
セッション管理を応用した認証のほかにも
HTTPでもともと定義されている認証方法があります。

HTTPの認証で一番シンプルなのが BASIC認証です。
クライアント側ではブラウザの機能で認証を行うので
デザインが変わることはありませんし、
サーバー側でもアプリケーションに実装するのも簡単です。
IISは知りませんが、Apacheには標準でモジュールが用意されています。

リクエストごとに認証することになるので
パフォーマンスには要注意ですが。
おっきー
大ベテラン
会議室デビュー日: 2003/05/01
投稿数: 104
投稿日時: 2005-07-08 19:54
ふと思ったのですが、
個人を認証せずに使えてしまって問題ないのでしょうか?

PCを認証するだけだと、普通の人でも偉い人のPCを使えば
なんでもありになると思います。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2005-07-08 20:25
引用:

その機能 ( 持ち回る ) が現在無いので、そうすると全ページに情報持ち回りロジックを書くのかなぁ、と。。。
( 認識違っていますか? )



そうですね、全ページに書く必要があります。
そうでなければ、たとえログインしてなくても、URLを叩くだけでページが開けて
しまいますから。

引用:

そして、ご提示頂いたので確かにクライアントのマシン名などは取れました!
が、これは「ボタン押下後のアクション」ですよね?
一番最初のトップページに遷移した際、クライアントの情報が欲しいのです。
( URL 直接指定で遷移した場合など )




おそらくソースからすると、ASPでサーバロジックを書かれていると思います。
私はJavaの技術者なので、ASPのことは詳しくないのですが、
サーバ側の、認証ページをcheckServletとしますと、
(色々な書き方があるとは思いますが、直感的にわかりやすい方法としまして)

<HTML>
<BODY>
<FORM NAME="Form1" ACTION="./checkServlet">
<INPUT TYPE="Text" NAME="COMPUTERNAME">
<INPUT TYPE="Text" NAME="USERDOMAIN">
<INPUT TYPE="Text" NAME="USERNAME">
<INPUT TYPE="Submit" NAME="Button1" VALUE="GET">
</FORM>
<SCRIPT LANGUAGE="VBScript">
Set WSH = CreateObject("WScript.Network")
Set TheForm = Document.forms("Form1")
TheForm.COMPUTERNAME.Value = WSH.ComputerName
TheForm.USERDOMAIN.value = WSH.UserDomain
TheForm.USERNAME.value = WSH.UserName
TheForm.submit
</SCRIPT>
</BODY>
</HTML>

こんな具合になります。Javaの場合、
サーバ側は(HttpServletRequest requestとして)

request.getParameter("COMPUTERNAME");
request.getParameter("USERDOMAIN");
request.getParameter("USERNAME");

で取得できます。

ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2005-07-08 22:38
引用:

ふと思ったのですが、
個人を認証せずに使えてしまって問題ないのでしょうか?



このような質問に直面しますと、ついログインと認証についての
問題と捉えがちですが(私も最初はそう思いました)、元質問者の

引用:

小僧さんの書き込み

<やりたいこと>
ログインしているユーザ毎に対して、
表示させるサイト画面を制御したい。
ただし、「ログイン」などの機能は使用しない。



表示させる画面をユーザ毎に変えることが目的であって、
それに伴う認証は目的ではないと見受けました。
基本的に、構築したいサイトは無認証でも構わないもので
必要とあれば、別の機会に、別の手段で認証を行う(BASIC認証など)
ものとする、と考えます(すいません、また勝手な憶測で・・・)

ちなみに・・・
本当にやりたいことはシングルサインオンかもしれない?
という気もしてきます。Windowsログイン時に、既にユーザとパスワードを
入れているから、サイトを開くときにまたパスワードを入力することも
ないだろうということです。そう考えますと、IISに統合Windows認証
というのがあるので、認証という意味では最終手段はそれかな?という気もします。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-07-11 11:26
おっきー様、ひら様、返信ありがとうございます。
また、返事が遅くなりまして申し訳ありません。
ひら様ご提示のサンプルをもとに、色々と試行錯誤をしていましたので。

結果から書きますと「実現しようとした事がうまく出来ました」!
以下、まとめてレスをさせて頂きます。

> セッション管理と認証は別物と考えてください。
はい、一応別物と理解しているつもりです。

> IISは知りませんが、Apacheには標準でモジュールが用意されています。
そうなんです。ぐーぐるさんに聞いた時、ほとんどのページで Apache の
設定方法しか書いていませんでした。。。
IIS もちょっとはあった気がしましたが。

> 個人を認証せずに使えてしまって問題ないのでしょうか?
問題ないんです。
と、いうか最初の設計思想だと「誰でも見れる & 更新出来る」状態だったのですが、
ここに来て「普通の人には更新させたくないなぁ」という意見が出たので。。。
そして、お約束ですが「開発期間は短く」「お金もそんなに出せない」という
条件付です。
最初から考えていれば問題なかったのですが。

> PCを認証するだけだと、普通の人でも偉い人のPCを使えば
ぇぇ、分かっています。。。

> そうですね、全ページに書く必要があります。
今回は URL 直接入力に関しては考慮しない ( 許可する ) 仕様で
行こうと思っています。
折を見てきちんとした対応を。。。

> おそらくソースからすると、ASPでサーバロジックを書かれていると思います。
ご提示頂いたソースをもとに、私がしたい事が出来ました。
まず、既存のトップページ「TopPage.asp」があるのですが、最初のリンク先を
「index.html」にして、コンピュータ名などを取得します。
その後、「<FORM NAME="Form1" ACTION="./TopPage" method="post">」 として
コンピュータ名などを「TopPage.asp」に渡して処理継続します。
一瞬画面が出るのはご愛嬌という事で(^^;

> 表示させる画面をユーザ毎に変えることが目的であって、
> それに伴う認証は目的ではないと見受けました。
仰る通り、認証は全く考慮せず、ユーザ毎に画面を変更するのが目的です。

> 本当にやりたいことはシングルサインオンかもしれない?
本当はこれが出来ればよかったのですが、そんなに大袈裟な事はしたくないなぁ、と思いまして。

色々と説明が足りず、推測して頂きながらアドバイスして頂き、非常に感謝しています。
特にひら様には、何度もサンプルソースを提示して頂き、恐縮に思います。

ここで終れば本当はよかったのですが、後 1 点アドバイスを頂ければ幸いです。

自分の端末 ( WindowsXP SP1 IE 6.0 ) で、
「Set objWSH = CreateObject("WScript.Network") 」は実施出来たのですが、
別の端末 ( Windows 2000 SP4 IE 6.0) で実施すると
「エラー:ActiveXコンポーネントはオブジェクトを作成出来ません。」と出てしまいました。。。

ここによると

メモ 上記の Web サイトにアクセスすると、
WSH を新しいバージョンにアップグレードすることもできます。
Microsoft Windows 98、Windows 2000、および Windows Me に組み込まれている
WSH のバージョンは、1.0 または 2.0 です。新しい機能を利用するには、
バージョン 5.6 にアップグレードする必要があります。

とあるので、 Windows 2000 の場合はバージョンアップをしないとエラーが出るのかな、と思いました。
この理解で宜しいのでしょうか?

宜しくお願いいたします。

<編集>
リンクの張り方を間違った × 2 ので編集(--;;;
</編集>

[ メッセージ編集済み 編集者: 小僧 編集日時 2005-07-11 11:29 ]

[ メッセージ編集済み 編集者: 小僧 編集日時 2005-07-11 11:30 ]
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2005-07-11 12:10
引用:

結果から書きますと「実現しようとした事がうまく出来ました」!



そう言っていただけると、回答者冥利につきます。


引用:

とあるので、 Windows 2000 の場合はバージョンアップをしないとエラーが出るのかな、と思いました。
この理解で宜しいのでしょうか?



私も、別件でWSHのインストールの必要があり、バージョンアップを行いました。
その後に前出のコードを書いたものですから、OSインストール時の
デフォルト状態での挙動については不明ですが、おそらくその認識で
良いと思います。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-07-11 16:20
ひら様、最後の最後までお付き合い頂きありがとうございます。

> おそらくその認識で良いと思います。
ありがとうございます。
インフラ関係はしっかりしているので、全社員使用しているマシンは
同じ環境 ( Windows XP SP1 IE 6.0 ) という事を確認しましたので、
今回はご提示頂いた方向で進んでいきます。

また何かありましたら宜しくお願いいたします。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-07-12 14:37
お世話になります。

> また何かありましたら宜しくお願いいたします。
すいません、あっさり「また」が発生してしまったのですが。。。

方針としては「WScript.Network」を生成して処理をしたいのですが、
当該オブジェクトが生成出来ないマシンが存在することがわかりました。
<現象>
Networkオブジェクトを生成する行で、
「エラー:ActiveXコンポーネントはオブジェクトを作成出来ません。」
が出てしまう。

<クライアント環境>
2 台の端末でテストをしたのですが、同じ環境です。
OS:WindowsXP SP1
IE:6.0
WSH:5.6

WSH のバージョンが 5.6 であれば問題なさそうに見えるのですが、
他に考慮すべき点はあるのでしょうか?

ちなみに、バージョンを確認したのは VBS にて
「WScript.Echo WScript.Version」を実行させて
表示した値です。
( VBS は両端末で出来たので、インターネットオプションの設定かなぁ、と
推測しているのですが、正直お手上げ状態です。。。 )

宜しくお願いいたします。

スキルアップ/キャリアアップ(JOB@IT)