none
ローカルサーバ内からWebサービスにアクセスした場合の認証について RRS feed

  • 質問

  • ASP.netの設定ファイル(web.config)のAuthorization要素について質問させてください。

    既存システムとして、クライアントがWindowForm、サーバ側がASP.NetのWebサービスで構成され、

    CL-SV間をSOAP XMLで繋いでいるシステムがあります。

    今回、携帯から上記システムにアクセスできるようにするため、Webサイトを新規に追加することとなりました。

    既存システムではWindowsFormからのアクセスはCookie認証を行っていますが

    新規に作成するWebサイトでは、Webサイト側でログイン認証を行うため、Webサービスへのアクセス時には認証処理は不要となります。

    この場合、Webサービス側のweb.configの

     configuration/system.web/authorization

    あたりにlocalからのアクセス時は認証不要とするような設定を追加する必要があるかと思うのですが

    どのような設定を行えばよいのか分からず困っております・・・

    このようなサーバ内でのWebサービス呼出を行う場合の良いやり方について、御存じの方がいればお知恵を頂きたいです。

    2017年8月14日 11:14

すべての返信

  • どうなっているのか詳しい状況が分からないのでハズレかもしれませんが・・・

    > この場合、Webサービス側のweb.configの
    > configuration/system.web/authorization
    > あたりにlocalからのアクセス時は認証不要とするような設定を追加する必要があるかと思うのですが

    WindowsForms(既存) ⇔ Webサービス(既存) の間は何らかの認証方式(フォーム認証?)で匿名アクセスが制限されていて、ASP.NET(新規) ⇔ Webサービス(既存) の間を匿名認証にしようと考えているようですが、それはできないと思います。

    ASP.NET(新規) ⇔ Webサービス(既存) の間も WindowsForms(既存) ⇔ Webサービス(既存) の間の認証のやり方と同じにすることはできないのですか?

    2017年8月14日 12:42
  • ご回答ありがとうございます。

    WindowsForms(既存) ⇔ Webサービス(既存) の間は、フォーム認証です。ログイン用のサービスにユーザ・パスワードを渡し、Cookieに認証トークンを保存する形です。

    ASP.NET(新規) ⇔ Webサービス(既存) の間で同様の方式を取れないか、については「ASP.NET(新規)側に認証トークンを保持できるのか」という点での懸念があり、候補から外していました。

    既存のAPサーバは3台の冗長化構成となっており、Webサービスはステートレスな作りとなっています。また、ロードバランサもセッションパーシステンスは行わず、ラウンドロビンで接続先サーバを決定していますが、各サーバのマシンキーを同一にしているため、ログイン時と異なるAPサーバに接続しても認証は通るようになっています。

    そのため、

     WindowsForms(既存) ⇔ Webサービス(既存)

     携帯 ⇔ASP.NET(新規)

    の間はどのサーバに接続しても問題なく認証が通るのですが、ASP.NET(新規) ⇔ Webサービス(既存)  間は以下の問題が発生すると考えています。

    1. 携帯からASP.NET(APサーバ1)にログイン [携帯のブラウザに認証トークン保存]
    2. ASP.NET(APサーバ1)からWebサービス(APサーバ1)にログイン [ASP.NET(APサーバ1)側に認証トークン保存]
    3. 携帯からASP.NET(APサーバ2)にアクセス [携帯のブラウザの認証トークン使用]
    4. ASP.NET(APサーバ2)からWebサービス(APサーバ2)にアクセス ⇒ ASP.NET(APサーバ2)には認証トークンが無い

    本来サーバ内のアクセスでは認証が不要なため、認証トークンが無い状態でもWebサービスを呼べるようにできないか、と考えています。


    2017年8月15日 2:06
  • APサーバ1、2 というのが何に該当するのは分かりませんが、とにかく先の私のレスの、

    > ASP.NET(新規) ⇔ Webサービス(既存) の間も WindowsForms(既存) ⇔ Webサービス(既存) の間の認証のやり方と同じにすることはできないのですか?

    に対する答えは No と理解しました。

    そうすると、WindowsForms(既存) ⇔ Webサービス(既存) の間はフォーム認証とし、ASP.NET(新規) ⇔ Webサービス(既存) の間は匿名認証にするという話になると思いますが、少なくとも自分にはその方法は分かりません。お役に立てずすみませんが、他の方の回答をお待ちください。


    #Webサービス(既存) が具体的にどういうシステムなのか分かりませんので外しているかもしれませんが、個人的には ASP.NET 標準の認証方式ではそれは不可能と思っています。フォーム認証と匿名認証の両方を有効にするのは匿名アクセスを許可するのと同じ。と言って、フォーム認証でアクセス制限をかけたまま(匿名認証は無効にしたまま)、ASP.NET(新規) からのアクセスのみ匿名認証を許可する方法はないと思うのですが

    #もし、既存のシステムが WindowsForms(既存) ⇔ Webサービス(既存) ⇔ DB サーバー(既存) というようなものであれば、新システムはで Webサービス(既存) は使わないで、Webサービス(既存) に代わる機能を ASP.NET(新規) に構築して、Webブラウザ(モバイル) ⇔ ASP.NET(新規) ⇔ DB サーバー(既存) というようにすれば問題は解決するように思えますが、それは問題外ですか?


    2017年8月15日 5:52
  • ご回答ありがとうございました。

    > #Webサービス(既存) が具体的にどういうシステムなのか分かりませんので外しているかもしれませんが、個人的には ASP.NET 標準の認証方式ではそれは不可能と思っています。フォーム認証と匿名認証の両方を有効にするのは匿名アクセスを許可するのと同じ。と言って、フォーム認証でアクセス制限をかけたまま(匿名認証は無効にしたまま)、ASP.NET(新規) からのアクセスのみ匿名認証を許可する方法はないと思うのですが

    localhostからのアクセスであれば匿名認証とするようなやり方があれば、と思ったのですがやはり難しいのでしょうか。

    > #もし、既存のシステムが WindowsForms(既存) ⇔ Webサービス(既存) ⇔ DB サーバー(既存) というようなものであれば、新システムはで Webサービス(既存) は使わないで、Webサービス(既存) に代わる機能を ASP.NET(新規) に構築して、Webブラウザ(モバイル) ⇔ ASP.NET(新規) ⇔ DB サーバー(既存) というようにすれば問題は解決するように思えますが、それは問題外ですか?

    既存システムと同じ(or同様)アプリケーションをもう一つ立ち上げるとなると、サーバー見積もりに跳ねるのでコスト上厳しいですね。

    システムを動かすだけであれば何らかの固定ユーザーで毎回ログインしてからWebサービスを呼び出せばよいのですが、パフォーマンス上不利になるかと考えています。

    2017年8月15日 10:30