anonymous Log in
Search
Recents:
v3.0
japan
LDAP認証について
31/07/12 00:45

kdldpcc

Replies: 6

お世話になります。KDLの安場と申します。
以下の環境で開発をしております。
GeneXus X Evolution 1 バージョン:10.1.52331 U7
WorkWithPlus 5.2 P18 GX Evolution 1 U5-U7
LDAP認証を実装しているのですが、接続に失敗します。
他に何か設定しないといけないものがあるのでしょうか?
&ldapClient.Host = 'XXXXXServer'
&ldapClient.Port = 389
&ldapClient.AuthenticationMethod = 'simple'
&ldapClient.User = &userId
&ldapClient.Password = &userPassword
&ret = &ldapClient.Connect()
If &ret = 0
Msg('接続に失敗しました。')
Else
Msg('接続に成功しました。')
EndIf
ホスト名やポート番号、ユーザーIDやパスワードは他のアプリケーション認証で
使用しているものなので、間違えていないと思います。
よろしくお願いします。
Replies

林田

31/07/12 21:15
&ret = 0 は成功なはずですが、送って頂いたソースでは、失敗になっています。 以下のページを参考にしてください。 http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Connect+Method, 「 It returns zero if the connection was successful」 2012年7月31日 14:45 Manabu.Yasuba : > お世話になります。KDLの安場と申します。 > > 以下の環境で開発をしております。 > GeneXus X Evolution 1 バージョン:10.1.52331 U7 > WorkWithPlus 5.2 P18 GX Evolution 1 U5-U7 > > LDAP認証を実装しているのですが、接続に失敗します。 > 他に何か設定しないといけないものがあるのでしょうか? > > &ldapClient.Host = 'XXXXXServer' > &ldapClient.Port = 389 > &ldapClient.AuthenticationMethod = 'simple' > &ldapClient.User = &userId > &ldapClient.Password = &userPassword > &ret = &ldapClient.Connect() > > If &ret = 0 > Msg('接続に失敗しました。') > Else > Msg('接続に成功しました。') > EndIf > > ホスト名やポート番号、ユーザーIDやパスワードは他のアプリケーション認証で > 使用しているものなので、間違えていないと思います。 > > よろしくお願いします。 >

kdldpcc

31/07/12 21:25
日本語サイトでは戻り値の結果が逆になっていました・・・ http://wiki.genexus.jp/hwiki.aspx?LDAPClient%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BF%E3%82%A4%E3%83%97 「数値: 1はサーバーへの接続の成功を示し、0は接続できなかったことを示します。」 成功してたんですね・・・ありがとうございました。 On Wed, 1 Aug 2012 11:15:14 +0900 林田武士

romeo147

01/08/12 00:11
みずほ情報総研の山田と申します。 当方もログイン時にLDAP認証(ActiveDirectory)をするようにしていて、 LDAPClientのWikiに載っているサンプルコードを参考に実装しました。 ただ、サンプルコードそのままではConnectに失敗したので、Userプロパティの設 定時に 「入力したユーザID」+「@ホスト名」を設定することで、Connectできるようにな りました。 (ここら辺は夫々の環境によって事情が異なるかもしれませんが。) サンプルコードで示すと以下のようになります。  &ldapClient.User = &userId + '@XXXXXServer' なお、Connectの戻り値ですが、Wikiに書いてあるとおり、接続成功の場合は「1」 を 失敗の場合は「0」を返すと思います。当方もそのようにエラーハンドルしていま す。 林田さんのレスにあった参考URLは、DBConnectionデータタイプのConnectメッソド に 関するもので、LDAPClientのものとは異なると思いますが、認識違いますでしょう か? もし、LDAPClient.Connectメッソドの戻り値が成功時に「0」を返すなら、正しい ID/Passwordを 入力した時は「0」を、間違ったID/Passwordを入力したと時は「1」が返ると思い ますので、 試してみてはいかがでしょうか? 以上、参考になれば幸いです。

kdldpcc

01/08/12 00:39
安場です。 ご回答ありがとうございます。 > なお、Connectの戻り値ですが、Wikiに書いてあるとおり、接続成功の場合は「1」 > を > 失敗の場合は「0」を返すと思います。当方もそのようにエラーハンドルしていま > す。 確かにIDとPWに何を入れても「0」が返ってきています。 ご提示いただいた > 「入力したユーザID」+「@ホスト名」 でも「0」が返ってきています。おそらく接続に失敗しています。 応答時間からすると接続はしようとしているようですが・・・ > (ここら辺は夫々の環境によって事情が異なるかもしれませんが。) このあたりが問題なのかも知れません。 もう少し調べてみます。 ありがとうございました。 On Wed, 1 Aug 2012 14:00:26 +0900 山田 佳央

林田

01/08/12 01:06
Wikiを確認してみました。 確かにLDAPClientもページではConnectメソッドが成功の場合には「1」が返されると書いてあります、しかし、同じページにConnectメソッドにリンクが貼られていると思いますが、そのリンク先がDBConnectionデータ型と共通であるConnectメソッドに遷移できます。 Connectメソッドのリンク先では、全く逆のことが書いてありました、成功の場合は「0」を返します。 こちらで試してみましたが、LDAPClientのconnectメソッドが成功した場合は「1」を返すのが正しいです。 DBConnectionのConnectメソッドが 成功した場合は「0」を返すのが正しいです。 先ほどは、誤った情報を送ってしまい、ご迷惑をおかけしました。 接続に関してですが、以下の定義でこちらのドメインい接続することはできました。 Event Enter &ldapClient.Host = "domainName.local" &ldapClient.AuthenticationMethod = "simple" &ldapClient.User = "domainName\user01" &ldapClient.Port = 389 &ldapClient.Password = "123456" &result = &ldapClient.Connect() if &result = 1 msg("Success: Connected") else msg("Error: cannot connect") endif 2012年8月1日 14:39 Manabu.Yasuba : > 安場です。 > > ご回答ありがとうございます。 > > > なお、Connectの戻り値ですが、Wikiに書いてあるとおり、接続成功の場合は「1」 > > を > > 失敗の場合は「0」を返すと思います。当方もそのようにエラーハンドルしていま > > す。 > 確かにIDとPWに何を入れても「0」が返ってきています。 > > ご提示いただいた > > 「入力したユーザID」+「@ホスト名」 > でも「0」が返ってきています。おそらく接続に失敗しています。 > 応答時間からすると接続はしようとしているようですが・・・ > > > (ここら辺は夫々の環境によって事情が異なるかもしれませんが。) > このあたりが問題なのかも知れません。 > > もう少し調べてみます。 > > ありがとうございました。 > > > > > On Wed, 1 Aug 2012 14:00:26 +0900 > 山田 佳央

kdldpcc

01/08/12 01:47
ご連絡ありがとうございます。 ホスト名ではなくドメイン名を指定することで、無事に認証ができるようになり ました。 &ldapClient.User = &userId + '@domainName' 結果も「1」が返ってきています。 ありがとうございました。 On Wed, 1 Aug 2012 15:06:35 +0900 林田武士


Back to japan