none
MVC3で自動ログインしたい RRS feed

  • 質問

  • いつもお世話になっております。

    Visual Studio2010に追加されたMVC3のテンプレートを使ってWebアプリを作っています。

    認証が必要なアプリなので通常時はまず認証画面に遷移するのですが、イリーガルな動作として認証画面を飛ばして直接画面を見せなくてはいけない時があります。

     

    ここでタイトルの質問になるのですが、ログインページを表示せずに自動でログインさせることは可能なのでしょうか?

    可能であればどのようにすればいいのかを教えてほしいです。

    セキュリティリスクとかそういうのは完全に無視していいです。

     

    URLにユーザー名とパスワードを入れてどうにかすればいけるんじゃないかな、と思ってるんですが・・。

     

    よろしくお願いします。

     

    2011年11月10日 7:01

回答

  • Form認証は認証チケット(クッキー)をもとに動作していますので、特別なときに認証チケットを自動で発行しまえばよいかと思います。

    たとえば、特定のURLにアクセスしたらFormsAuthentication.SetAuthCookie()で認証チケットを渡したうえでログイン後のURLに遷移させるとか。

     


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク puni 2011年11月11日 0:48
    2011年11月10日 10:25

すべての返信

  • こんにちは。

     

    認証方法によると思います。

    2011年11月10日 8:30
  • Keiichi Oumi さん

     

    認証方法も書いてませんでしたね。

    といってもどんな説明があればいいのかがよくわからないんですが、「フォーム認証」・・・でいいんでしょうか?

     

    MVC3のテンプレートでできあがったものに、MembershipProviderを継承したクラスを追加しただけです。

    継承したクラスはValidateUserで単純なテキスト比較をするだけのものです。

     

    2011年11月10日 8:49
  • でしたら、レアケース時に認証するようなロジックをMembershipProviderに入れ込めないでしょか?
    かずき Blog:http://d.hatena.ne.jp/okazuki/ VS 2010のデザイナでBlendのBehaviorをサポートするツール公開してます。 http://vsbehaviorsupport.codeplex.com/
    2011年11月10日 9:22
  • Form認証は認証チケット(クッキー)をもとに動作していますので、特別なときに認証チケットを自動で発行しまえばよいかと思います。

    たとえば、特定のURLにアクセスしたらFormsAuthentication.SetAuthCookie()で認証チケットを渡したうえでログイン後のURLに遷移させるとか。

     


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク puni 2011年11月11日 0:48
    2011年11月10日 10:25
  • かずきさん  ありがとうございます。

     

    すみません、MVCの知識がかなり無いので的外れなことを聞くかもしれませんが、MembershipProviderの認証ロジックをログインページを介さずに呼ぶことができるのでしょうか?

     

    今の作りだと、例えば「/Home/Index」を直接開こうとしても、HomeController.Index()は呼ばれずに「/Account/LogOn」にリダイレクトされてしまうんですが・・・。

     

    2011年11月10日 10:29
  • > イリーガルな動作として認証画面を飛ばして直接画面を見せなくてはいけな
    > い時があります。

    具体的にどういうシナリオを考えているんですか? 「イリーガルな動作」と
    はどういうことでしょう。

    そのあたりが分かると、具体的なアドバイスが得られるかもしれません。

    セキュリティ無視でイリーガルなアクセスを許すなら、そもそも認証なんて必
    要ないのではと思えてしまいます。


    ひょっとして、最初のログインの時、ユーザーのブラウザに永続的(50 年有効)
    な認証 Cookie を発行して、次回のアクセスの際自動的に認証されるようにする
    というようなことでいいのでしょうか? であれば、標準の Forms 認証の機能
    に備わっていますが。

     

    2011年11月10日 13:00
  • 小野@どっとねっとふぁんさん、SurferOnWwwさん ありがとうございます。

    「イリーガルな動作」なんですが、

    ・通常はユーザがブラウザを開いてアクセス(通常動作)

    ・常駐しているアプリケーションから開かれる時だけ特定のユーザでログインして特定のページを表示(イリーガル)

    です。

    昔「ユーザ名:パスワード@アドレス」みたいな書き方をしてた気がするので、そんなことができるのかな~と。(表示するページを切り替えるだけの認証らしくセキュリティとか一切考えていません)

     

    小野@どっとねっとふぁんさんの返信を参考に、特別なURLを作ってそこをアクセスしたら勝手に認証、という感じで作ってみたいと思います。

    ありがとうございました。

    2011年11月11日 0:48