- PR -

【Flex3+Webサービス】フォーム認証について

1
投稿者投稿内容
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2009-04-08 17:47
画面側をFlex3で作成し、WebサービスをC#で作成しようと思っています。
そこでFlex3とWebサービス間のSOAP通信を使用してASP.Netのフォーム認証(web.config使用のもの)というのはできるのでしょうか?
通常のASPページのときと同じように1度認証すればCookieに保存され、他のページにも遷移できるようになるという感じです。
ログインページもFlexにて作成します。
どこか参考になるサイト等ありましたらよろしくお願いします。

[環境]
Flex3
VS2005Ex
WindowsXP Pro

_________________
by うちうせん


[ メッセージ編集済み 編集者: うちうせん 編集日時 2009-04-15 10:55 ]
がんふぃーるど
ベテラン
会議室デビュー日: 2006/06/05
投稿数: 58
お住まい・勤務地: さいたま
投稿日時: 2009-04-10 12:55
質問の内容の答えになっているか分かりませんが、ASP.NETのフォーム認証を使用してFlashからアクセスするサンプルはCodeProject(英語)にあります。
Multiple File Upload With Progress Bar Using Flash and ASP.NET

ただ、FlashPlayerの問題として、セッションCookieがIEから取得できない(IEのIn-memory CookieをFlashPlayer初期化時に貰えない?)ことがあるようで、上記のサンプルではセッションがCookielessになっています。
(認証チケットもCookieではなく、クエリ文字列に付与して送られている)

FlashPlayer10などで改善されているかは未確認ですが、ログインページもFLEXで作られるというなら、セッションIDや認証チケットの扱い(と受け渡し)をある程度考慮しないとセキュリティ上の問題が発生するかもしれません。

# もやっとした回答でごめんなさい
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2009-04-13 10:29
アドバイスありがとうございました。
同じくCookieの部分で引っかかっていました。

結果として白画面のログイン処理専用Aspxを作成することで実装できました。


Flex→専用Aspx→Flex
   | (要認証フォルダ内)
_________________
by うちうせん
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2009-04-15 11:06
一度[済]にしましたが、仕様上ログイン専用Aspxを使えないので再度質問あげます。

Flex3からWebサービス上のログイン処理を呼び、ログイン処理を行いたいわけですが…
Webサービス上のログイン処理で
FormsAuthentication.SetAuthCookie("temp", true);
を使用してCookieの設定をしました。
クライアントのFlex3に戻ってきた際にローカルPCにCookieファイル(txt)は意図通りの認証情報が出力され、新規作成されていました。
しかし、そのまま認証後使用できるはずのWebサービスにアクセスしようとした際に未認証ではじかれてしまいます。
ブラウザがCookieを認識してない(?)のか、一度F5で再表示処理を行うと正常に認証済と判断され、Webサービスが使用できるようになりました。
この現象はIE6のみで発生しており、IE7やFireFoxでは発生しませんでした。
原因や回避方法がわかる方アドバイスお願いします。

[環境]
Flex3
VS2005Ex
WindowsXP Pro
IE6 SP3
_________________
by うちうせん
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-04-15 12:20
Fiddler2などのローカルプロキシで、
実際にCookieのやり取りが正しく行われているかを、
確認してみてください。

私もFlex3/PHPでアプリを作っていますが、
残念ながらIE6でその手の問題が出たことは有りません。
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2009-04-15 14:59
HttpHeaderを監視しましたが、失敗するWebサービスへのアクセス時にはHttp自体送信されていませんでした。

簡単に現状報告をします。
Flexログインページ上でWebサービスを定義するときに<mx:WebService>タグを使用しています。
ログイン用と処理用の2つWebサービスを定義しています。(処理用は要認証)
ログインページ読込時に2つのWebサービスに対してGETが走り、処理用Webサービスはリダイレクトのレスポンス(HTTP/1.1 302 Found)が返ってきているようです。
ログイン用は(HTTP/1.1 200 OK)が返ってきています。

まずログイン作業を行うためにログイン用Webサービスを呼び、フォーム認証Cookieが設定されます。
次に処理用を呼びますが、HTTP送信(POST)が行われずに失敗してしまいます。

原因かどうかはわかりませんが、<mx:WebService>タグに定義していて、ページ読込時のGETに失敗した場合そのサービス定義を無効?にしてHTTP送信していないような感じがします。
ちなみに、タグ定義ではなくASから動的に定義することで正常動作しました。

確信がもてませんので引き続き情報お願いします。
1

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