- PR -

Webサービス利用時の認証について

1
投稿者投稿内容
太朗
会議室デビュー日: 2005/04/26
投稿数: 4
投稿日時: 2005-04-26 11:54
ノータッチデプロイメントでWindowsアプリケーションをWebから起動し、Webサービスを使ってサーバとデータ交換したいのですが、Webサービス側でなんらかの認証が行われないと利用許可されていないアプリケーションから不正にWebサービスが利用できてしまうと思います。

Webサービス利用時の認証方法としてどのようなやり方があるのでしょうか?

インターネットを利用したBtoBシステムを.NETを利用して行えないかと勉強しておりますが、基本的な所でつまづいていますのでどなたかご教授ください。
壱丸3
常連さん
会議室デビュー日: 2004/09/13
投稿数: 34
投稿日時: 2005-04-26 12:58
方法は色々あると思いますが、
MSのガイドライン的な説明はこちらに載っています。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconsecuringaspnetwebservices.asp

あと、私は以前こちら↓を参考にさせていただき、
認証チケットの利用で実装しました。
http://www.users.gr.jp/ml/archive/viewer.aspx?name=aspx&no=687
太朗
会議室デビュー日: 2005/04/26
投稿数: 4
投稿日時: 2005-04-27 10:11
ご回答ありがとうございます。大変参考になりました。

BASIC認証によりWebサービス全体を簡易的に利用制限するする方法が分かりました。(SSL必須)
[概要]
(1)WebサービスのURLをBASIC認証の必要なURL配下にする。
(2)Webサービス生成時に認証情報(ユーザ、パスワード)を設定する。
Dim sv As localhost.HelloService = New localhost.HelloService
sv.Credentials = New System.Net.NetworkCredential("tomcat", "tomcat")

いろいろな選択肢があるのですね。
・ユーザによる細かい利用制限が必要な場合はセッションを使ったユーザ認証
・さっくりしたWebサービスが利用制限のみでいい場合はBASIC認証
といったところでしょうか?
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2006-05-30 17:08
つい最近この投稿を知ったものです。
もう少し詳しく聞きたいと思いまして追加投稿してしまいました。

ある本でWebサービスを勉強してるのですがサービスを使おうとするクライアント側でエラーが起きてしまいます。
HTTP ステータス 401: Access Denied で要求が失敗しました。

多分この認証とすごく関係してると思うのですが中々先に進みません。
現在このような記述をしています。

Webサービス側
・ソリューション HelloWorld
・HelloService.asmx内

[WebMethod]
public string sayHello(string name){
return "Hello, " + name + "!";
}

Client側
・ソリューション HelloClient
・Web参照の追加 http://localhost/HelloWorld/HelloService.asmx
・Form1.cs内
private void button1_Click(object sender, System.EventArgs e){
localhost.HelloService stubHello = new localhost.HelloService();
this.label1.Text = stubHello.sayHello(this.textBox1.Text);
}
(*)テキストボックス1に"World"を入れて、ボタン1をクリックするとラベル1に"Hello, World!"と表示されるらしいです。

本には認証の事が書かれてなかったので暗黙の了解でする事があるのでしょうか?
アドバイスを頂けると助かります。よろしくお願いします。

[XPProSP2] [VS.NET2003]
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-30 21:43
引用:

ある本でWebサービスを勉強してるのですがサービスを使おうとするクライアント側でエラーが起きてしまいます。
HTTP ステータス 401: Access Denied で要求が失敗しました。



特に認証による制限をかけた覚えが無いのに、接続認証に失敗して Web サービス呼び出しが拒絶されるってことですよね?

であれば、単純に IIS の設定が足りないんでしょう。

Web サービスを配置した仮想フォルダに対する、匿名アクセスが許可されていないとか、そういう話だと思います。
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2006-05-31 10:02
>>渋木宏明さん

IISの設定で仮想フォルダに対する匿名アクセスを許可したら上手く行きました!
クライアントばかり目が行ってたせいで盲点でした・・・

本の著者の方に問い合わせた所このように返ってきました。

「認証をかけない場合、IISは匿名アカウントからのアクセスとして扱いますので、IUSER_ほげほげに、匿名アカウントからのアクセス権がないと、HTTP 401を返します。IISだと、wwwrootには、デフォルトでアクセス権が設定されていますので、この下へフォルダを作成している場合は、設定が継承されます。
しかし、wwwrootの外に作成したディレクトリの場合ですと、この設定がありませんので、匿名アカウントからのアクセスが拒否され、HTTP 401を返します。」

どうみても私が勝手に仮想フォルダでやってしまったのが原因ですね・・・
本当にすいません&有難う御座いました!

[ メッセージ編集済み 編集者: パンダおにぎり 編集日時 2006-05-31 10:20 ]
1

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