C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: C#でログイン認証(ユーザー管理システム)を作りたいです。。


(過去ログ 135 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■79682 / inTopicNo.1)  C#でログイン認証(ユーザー管理システム)を作りたいです。。
  
□投稿者/ ななみ (1回)-(2016/04/30(Sat) 21:16:07)

分類:[C#] 

C#を始めたばっかのひよっ子ななみです。
先輩方!どうか知恵をお貸しください。

Windowsフォームアプリでユーザーを管理するためのログイン認証をしたいのですがどうすれば良いのか行き詰ってます。

・複数人の利用
・管理はメールアドレスとパスワードで行いたい
・ログインフォームはテキストボックス×2つ(メールアドレスとパスワード入力用)、ログインボタン1つのシンプルな画面、認証成功後アプリの起動
・利用登録したメールアドレス以外ではアプリを起動できない(利用解除した場合も起動できなくする)
・ユーザーはパスワードの変更をできるようにしたい(初期パスワードは皆同じでもOK)

メールアドレスを追加して利用を許可する形で、随時追加/削除を行いたいのでサーバー上で管理するのが良いかと考えたのですが・・・
私が利用しているさくらインターネットのサーバーはデータベースに外部から接続できないため、どのように管理して良いのかわからなくなってしまいました。

どのような方法でログイン用メールアドレスを管理(追加/削除)し、ユーザー自身がパスワードを変更できるようなユーザー管理システムが作れますか?
よろしくお願いします!

引用返信 編集キー/
■79684 / inTopicNo.2)  Re[1]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ しま (107回)-(2016/04/30(Sat) 22:31:14)
No79682 (ななみ さん) に返信
> C#を始めたばっかのひよっ子ななみです。
> 先輩方!どうか知恵をお貸しください。
> 
> Windowsフォームアプリでユーザーを管理するためのログイン認証をしたいのですがどうすれば良いのか行き詰ってます。
> 
> ・複数人の利用
> ・管理はメールアドレスとパスワードで行いたい
> ・ログインフォームはテキストボックス×2つ(メールアドレスとパスワード入力用)、ログインボタン1つのシンプルな画面、認証成功後アプリの起動
> ・利用登録したメールアドレス以外ではアプリを起動できない(利用解除した場合も起動できなくする)
> ・ユーザーはパスワードの変更をできるようにしたい(初期パスワードは皆同じでもOK)
> 
> メールアドレスを追加して利用を許可する形で、随時追加/削除を行いたいのでサーバー上で管理するのが良いかと考えたのですが・・・
> 私が利用しているさくらインターネットのサーバーはデータベースに外部から接続できないため、どのように管理して良いのかわからなくなってしまいました。

もう少しやりたいことと、すべき事とを整理したらどうですか?
1]     Windowsフォームアプリ A があって、
1-1]   A を起動するとログイン画面が現れる
1-1-1] アプリケーション A はどのようにして各ユーザーが入手し、インストールするのかあなたの書込みからは何も分からない
         アプリケーションを渡す前にユーザー登録させれば、初期パスワードのことは解決しませんか?
1-2]   このログイン画面にはユーザーID と パスワード との入力用にテキストボックスがある
1-2-1] 何らかの操作(ログインボタンを押す、2つのテキストボックスが空でない時にエンターキー等のキー入力)でユーザー認証を行う
1-3]   ユーザー認証するためにDB(データーベース)を利用したい
1-3-1] DBはサーバーの外部からは直接操作できない
       http や https やを使ってそのサーバーと通信できさえすればDBの操作は可能なんですね?
       http/https でデーターのやり取りは可能なので(html 文書でなくてもいいので)ログイン=ユーザー認証は出来そうですね
1-3-2] サーバー側にはユーザー認証用の WEBサービスのようなものがありさえすればいいのだから
         php, Perl, Python, Ruby などでログイン画面に入力した文字列をサーバー側で受取って、DBから登録済みかどうか検査して
         結果を返すことは出来そうです

引用返信 編集キー/
■79685 / inTopicNo.3)  Re[2]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ ななみ (2回)-(2016/05/01(Sun) 00:17:04)
No79684 (しま さん) に返信
> ■No79682 (ななみ さん) に返信
>>C#を始めたばっかのひよっ子ななみです。
>>先輩方!どうか知恵をお貸しください。
>>
>>Windowsフォームアプリでユーザーを管理するためのログイン認証をしたいのですがどうすれば良いのか行き詰ってます。
>>
>>・複数人の利用
>>・管理はメールアドレスとパスワードで行いたい
>>・ログインフォームはテキストボックス×2つ(メールアドレスとパスワード入力用)、ログインボタン1つのシンプルな画面、認証成功後アプリの起動
>>・利用登録したメールアドレス以外ではアプリを起動できない(利用解除した場合も起動できなくする)
>>・ユーザーはパスワードの変更をできるようにしたい(初期パスワードは皆同じでもOK)
>>
>>メールアドレスを追加して利用を許可する形で、随時追加/削除を行いたいのでサーバー上で管理するのが良いかと考えたのですが・・・
>>私が利用しているさくらインターネットのサーバーはデータベースに外部から接続できないため、どのように管理して良いのかわからなくなってしまいました。
>
> もう少しやりたいことと、すべき事とを整理したらどうですか?
> 1] Windowsフォームアプリ A があって、
> 1-1] A を起動するとログイン画面が現れる
> 1-1-1] アプリケーション A はどのようにして各ユーザーが入手し、インストールするのかあなたの書込みからは何も分からない
> アプリケーションを渡す前にユーザー登録させれば、初期パスワードのことは解決しませんか?
> 1-2] このログイン画面にはユーザーID と パスワード との入力用にテキストボックスがある
> 1-2-1] 何らかの操作(ログインボタンを押す、2つのテキストボックスが空でない時にエンターキー等のキー入力)でユーザー認証を行う
> 1-3] ユーザー認証するためにDB(データーベース)を利用したい
> 1-3-1] DBはサーバーの外部からは直接操作できない
> http や https やを使ってそのサーバーと通信できさえすればDBの操作は可能なんですね?
> http/https でデーターのやり取りは可能なので(html 文書でなくてもいいので)ログイン=ユーザー認証は出来そうですね
> 1-3-2] サーバー側にはユーザー認証用の WEBサービスのようなものがありさえすればいいのだから
> php, Perl, Python, Ruby などでログイン画面に入力した文字列をサーバー側で受取って、DBから登録済みかどうか検査して
> 結果を返すことは出来そうです
>





御丁寧にありがとうございます!

> アプリケーションを渡す前にユーザー登録させれば、初期パスワードのことは解決しませんか?
そうですね、こちらで解決しそうです!
いろいろと考え込んでいると余計にわからなくなってしまい冷静に考えれなくなっていたようです。
ありがとうございました!

ただもう1点お聞きしたいです。。

> php, Perl, Python, Ruby などでログイン画面に入力した文字列をサーバー側で受取って、DBから登録済みかどうか検査して 結果を返すことは出来そうです

ユーザー認証用のWEBサイトで「ログインフォームに入力した文字列の"受け取る方法"」と「検査した結果をログインフォームに"返す方法"」がイマイチよくわからないのですが、具体的にどのような手法で行うのでしょうか?
引用返信 編集キー/
■79686 / inTopicNo.4)  Re[3]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ 774RR (397回)-(2016/05/01(Sun) 19:01:10)
普通は basic 認証とか digest 認証とか使うんぢゃないかな。
引用返信 編集キー/
■79687 / inTopicNo.5)  Re[3]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ WebSurfer (902回)-(2016/05/02(Mon) 13:46:48)
No79685 (ななみ さん) に返信

> ユーザー認証用のWEBサイトで「ログインフォームに入力した文字列の"受け取る方法"」と
> 「検査した結果をログインフォームに"返す方法"」がイマイチよくわからないのですが、
> 具体的にどのような手法で行うのでしょうか?

セキュリティのことは考えてますか? 例えば、SSL、SQL インジェクション、パスワードの
ハッシュ保存とかいう言葉を聞いてそれが何だかわかるでしょうか?

もし、聞いたこともないということでしたら、そちらの方向(Web で認証)には進まない方が
よさそうだと思うのですが・・・
引用返信 編集キー/
■79688 / inTopicNo.6)  Re[4]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ ななみ (3回)-(2016/05/03(Tue) 01:57:06)
No79686 (774RR さん) に返信
> 普通は basic 認証とか digest 認証とか使うんぢゃないかな。

basic認証が手っ取り早いかなぁとも考えたのですが・・・
今回作りたいユーザー管理システムは認証用のWEBページを作り、将来的にはユーザーの情報(登録日や使用アプリ名など)も管理できるような構成にしたいと考えています。
そういった目的から、単にIDとパスワードの照合だけでなく”ログイン制御と管理システムとしての両方の機能を実装した処理”を完成させることを目標にしているため、basic認証は候補として外しました。

説明不足ですみませんでした。。
引用返信 編集キー/
■79689 / inTopicNo.7)  Re[4]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ ななみ (4回)-(2016/05/03(Tue) 02:24:22)
No79687 (WebSurfer さん) に返信
> ■No79685 (ななみ さん) に返信
>
> セキュリティのことは考えてますか? 例えば、SSL、SQL インジェクション、パスワードの
> ハッシュ保存とかいう言葉を聞いてそれが何だかわかるでしょうか?
>
> もし、聞いたこともないということでしたら、そちらの方向(Web で認証)には進まない方が
> よさそうだと思うのですが・・・

パスワードのハッシュ化については現在学習しており、当然実装する方向です。
ユーザー管理システムというからにはずさんな情報管理はできないと思っております。

まだまだプログラムを初めて間もない初心者ですので書籍やWEBを探りながらの状況ですが、誰しも最初はわからない事ですし、いずれは立派なプログラマーになりたいという一心で取り組んでいます。
今はこうしたユーザー管理システムをどうしても開発したくて、この開発を成功させることで一歩成長できればと思ってます。


ただ、パスワードに関してはローカルファイルからの照合でもよいかなと考えています。

・ログインID(メールアドレス)はこちらが管理システム(WEBページ)の情報から照合
・パスワードはテキストファイルなどを読み込んで照合

こうすることでユーザーがパスワードを変更することも可能かと思っています。


今回のログイン制御(認証の可否)はあくまでもメールアドレスで管理できればよいと思っているため、パスワードをこちらで管理する必要はないかと思っています。
「メールアドレスだけの照合でよいのでは?」と突っ込まれそうですが、そこは見栄えといいますか・・・ログイン制御にはID(メールアドレス)とパスワードの2点をセットで実装したいというこだわりがありまして^^;

これは妥協案ですので、できればIDとパスの両方をWEB上で、もちろんパスワードをハッシュ化して管理するというしっかりとしたシステムを開発したいというのが一番の目的です。

現状はWEBページの照合結果をクライアント側で受け取る方法(逆のクライアント側の情報を送る方法も)がわからずに悩んでいるので、そこの解決策を見いだせればなぁと思っています。
引用返信 編集キー/
■79690 / inTopicNo.8)  Re[5]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ WebSurfer (903回)-(2016/05/03(Tue) 09:30:20)
No79689 (ななみ さん) に返信

> 現状はWEBページの照合結果をクライアント側で受け取る方法(逆のクライアント
> 側の情報を送る方法も)がわからずに悩んでいるので、そこの解決策を見いだせ
> ればなぁと思っています。

しまさんが提案されている「ユーザー認証用の WEBサービス」を検討してみましたか?

> 私が利用しているさくらインターネットのサーバーはデータベースに外部から接続
> できないため、どのように管理して良いのかわからなくなってしまいました。

とのことですので、「さくらインターネットのサーバー」に「ユーザー認証用の WEB
サービス」を実装して、そこに Windows Forms アプリからアクセスして認証を得ると
いうことになると思うのですが・・・

ただし、「さくらインターネットのサーバー」にユーザー認証の仕組みは実装してい
ないということであれば、それを実装することから始めることになるはずです。

自分自身は PHP には触ったこともないのですが、ググって調べた限りでは既存のユー
ザー認証用のパッケージもあるようです。例えば下記:

ユーザー認証(PEAR::Auth)
http://www.phpbook.jp/pear/pear_auth/

php mysql authentication などをキーワードにググれば他にも参考になる記事が多々
見つかると思います。

また、どのようなユーザー認証システムを実装するのがお勧めか「さくらインターネ
ット」のサポートが情報を持っているかもしれません。



#あと、余計なお世話かもしれませんが・・・

> ユーザー管理システムというからにはずさんな情報管理はできないと思っております。

質問者さん自身がサーバーを管理するのと「さくらインターネット」が管理するのと、
どちらがセキュリティが高いかはちょっと置いといて、ユーザー情報を保持するサー
バーは質問者さんの管理下にないということになります。

パスワードをハッシュすればそれでも安全かというと、必ずしもそうではないそうです
のでご注意ください。詳しくは以下の記事を見てください。

ハッシュとソルト、ストレッチングを正しく理解する:本当は怖いパスワードの話 (1/4)
http://www.atmarkit.co.jp/ait/articles/1110/06/news154.html

引用返信 編集キー/
■79691 / inTopicNo.9)  Re[3]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ しま (108回)-(2016/05/03(Tue) 12:23:26)
No79685 (ななみ さん) に返信
> ■No79684 (しま さん) に返信
>>php, Perl, Python, Ruby などでログイン画面に入力した文字列をサーバー側で受取って、DBから登録済みかどうか検査して 結果を返すことは出来そうです
>
> ユーザー認証用のWEBサイトで「ログインフォームに入力した文字列の"受け取る方法"」と「検査した結果をログインフォームに"返す方法"」がイマイチよくわからないのですが、具体的にどのような手法で行うのでしょうか?

「イマイチよくわからない」ではあなたがどこまで分かってどこが分からないのか「さっぱり分からない」ことにお気付きでしょうか?
具体的に用いるのは http プロトコルです。
GET なり、PUT なり、POST なりのあなたが適切と思う要求をサーバー(WEBサービス)にあなたのログイン画面を表示するアプリケーション A
からサービスを扱う uri に渡して、認証結果の応答を待つ(受取る)ということです。

ここには Web ブラウザーは一切必要ないことにご注意ください(Web ブラウザーを使ってはいけないのではありません)。
引用返信 編集キー/
■79692 / inTopicNo.10)  Re[6]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ ななみ (5回)-(2016/05/04(Wed) 00:52:54)
2016/05/04(Wed) 00:56:58 編集(投稿者)
2016/05/04(Wed) 00:56:49 編集(投稿者)

No79690 (WebSurfer さん) に返信

> とのことですので、「さくらインターネットのサーバー」に「ユーザー認証用の WEB
> サービス」を実装して、そこに Windows Forms アプリからアクセスして認証を得ると
> いうことになると思うのですが・・・

> ただし、「さくらインターネットのサーバー」にユーザー認証の仕組みは実装してい
> ないということであれば、それを実装することから始めることになるはずです。

おっしゃる通りですね!
まずは認証用のWEBサービスを構築することから始めてみます。


> 自分自身は PHP には触ったこともないのですが、ググって調べた限りでは既存のユー
> ザー認証用のパッケージもあるようです。例えば下記:
>
> ユーザー認証(PEAR::Auth)
> http://www.phpbook.jp/pear/pear_auth/
>
> php mysql authentication などをキーワードにググれば他にも参考になる記事が多々
> 見つかると思います。

こうしたサービス、さらには調べ方をご教授頂けたことは次へのステップへ繋がるため非常に助かります。
いったい何を調べればよいのかわからなかったため全く先へと進めない状況になっていました。


> パスワードをハッシュすればそれでも安全かというと、必ずしもそうではないそうです
> のでご注意ください。詳しくは以下の記事を見てください。
>
> ハッシュとソルト、ストレッチングを正しく理解する:本当は怖いパスワードの話 (1/4)
> http://www.atmarkit.co.jp/ait/articles/1110/06/news154.html

参考サイトありがとうございます。
こうしたサービスを作るのは初めてですが、しっかりと学び、次は私自身が困っている人を助けることができるようになれるよう、これからも努力して精進していこうと思います!
解決済み
引用返信 編集キー/
■79693 / inTopicNo.11)  Re[4]: C#でログイン認証(ユーザー管理システム)を作りたいです。。
□投稿者/ ななみ (6回)-(2016/05/04(Wed) 00:56:28)
No79691 (しま さん) に返信

> 具体的に用いるのは http プロトコルです。
> GET なり、PUT なり、POST なりのあなたが適切と思う要求をサーバー(WEBサービス)にあなたのログイン画面を表示するアプリケーション A
> からサービスを扱う uri に渡して、認証結果の応答を待つ(受取る)ということです。
>
> ここには Web ブラウザーは一切必要ないことにご注意ください(Web ブラウザーを使ってはいけないのではありません)。

具体的な手法をご教授頂きありがとうございます!
処理の手順がイメージできたので、早速実装に取り掛かろうと思います。

またわからないことがあれば質問させていただく事もあるかと思いますが、ここまで具体的にご説明して頂けたので後はなんとか自分自身で完成させてみようと思います。

本当にありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -