- PR -

ユーザー認証について

1
投稿者投稿内容
かなめ
会議室デビュー日: 2002/07/15
投稿数: 16
お住まい・勤務地: 東京
投稿日時: 2002-08-14 19:55
いつもお世話になっております。
かなめです。

ユーザー認証用の画面に、ユーザーIDとパスワードとドメインを入力してもらい、
ドメインによるパスワードチェックを行いたいと思っています。
そこで、Web Serviceを使用て、チェックを行おうと考えています。
(普通のクラスでも良かったのですが、Web Serviceの方が汎用的かと・・・)

下記のようにプログラムを作成したのですが、うまく動作しません。
Win32 APIの呼び出しが悪いような感じはするのですが、
よくわからなくて・・・。

.NET FrameWorkの認証機能を使うことも考えましたが、
出来ればプログラムによるチェックを行いたいと思っています。

おわかりの方、ご教授お願い致します。

**********
Imports System.Web.Services

<WebService(Namespace:="http://tempuri.org/")> _
Public Class lgonC
Inherits System.Web.Services.WebService

Declare Function LogonUser Lib "ADVAPI32.DLL" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, ByRef phToken As Integer) As Integer

Public Const LOGON32_LOGON_BATCH As Short = 4
Public Const LOGON32_LOGON_INTERACTIVE As Short = 2
Public Const LOGON32_LOGON_SERVICE As Short = 5
Public Const LOGON32_PROVIDER_DEFAULT As Short = 0
Public Const LOGON32_PROVIDER_WINNT35 As Short = 1

Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Integer) As Integer

<WebMethod()> Public Function lgoncheck(ByVal uName As String, ByVal Pwd As String, ByVal Domain As String) As Integer
Dim hToken As Integer = 0
Dim Rtn As Integer
Dim lhToken As Integer
Dim dummy As Integer


Rtn = LogonUser(uName, Domain, Pwd, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, lhToken)
hToken = lhToken

lgoncheck = Rtn

If hToken <> 0 Then
dummy = CloseHandle(lhToken)
End If

End Function

End Class
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-08-15 13:11
引用:

ユーザー認証用の画面に、ユーザーIDとパスワードとドメインを入力してもらい、
ドメインによるパスワードチェックを行いたいと思っています。


基本認証か統合 Windows 認証ではダメなんでしょうか?
※ 参照 : ASP.NET における認証 : .NET セキュリティ ガイド, [HOW TO] Windows セキュリティを使用して ASP.NET アプリケーションをセキュリティで保護する方法
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-08-17 03:33
ASPや、VBなどのプログラミング言語でドメインレベルの制御を行うのであれば、ADSIを使うべきです。ADSIはディレクトリサービス用のAPIで、Win32APIを直接コールするよりは遙かに簡単に、ドメインユーザー(ローカルユーザーもその一つです)や、ExchangeServerのユーザー管理、IISそのもののセキュリティ制御なども可能になっています。

参考書としては翔泳社から、『ADSI ASPプログラミング』というちょっと古い本ですが、充実した内容のものが出版されています。ですが、本の中のサンプルは同社のサイトからダウンロード可能です。

http://www.shoeisha.com/down/book/adsi/adsicode.zip

とりあえず、試してみることをお勧めします。
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-08-17 12:44
引用:

ASPや、VBなどのプログラミング言語でドメインレベルの制御を行うのであれば、ADSIを使うべきです。


ADSI を利用するなら、.NET F/W からは System.DirectoryServices を使うのでは?

ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/frlrfSystemDirectoryServices.htm System.DirectoryServices 名前空間 (VS.NET のオンラインマニュアル)
または、
System.DirectoryServices 名前空間 (MSDN オンライン ライブラリ)
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-08-17 17:48
>ADSI を利用するなら、.NET F/W からは System.DirectoryServices を使うのでは?

まったく、その通りです。ありがとうございます。

うーん、.NET良くできてる(苦笑)。
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
かなめ
会議室デビュー日: 2002/07/15
投稿数: 16
お住まい・勤務地: 東京
投稿日時: 2002-08-19 09:30
biac様・うりゅう様
ありがとうございます。
System.DirectoryServicesは知りませんでした。
勉強不足ですみません。。。
ヘルプ見ながらやってみます。
わからない時には、お願い致します。
1

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