カテゴリー別アーカイブ: プログラム

[Oracle初心者運用メモ]VB.NETからOLEDB接続で予期せぬエラー

久々にOracle関連の記事を書いてます。

VB.NETでOracle10gに接続しているシステムを使用されている客先より、
パソコンのパーティションを分けたら、システムで予期せぬエラーが
出るようになったという連絡があり調査することに。。

VB.NETからの接続は、ADO.NETを使用してOledb接続をしているのですが
接続ではエラーになっておらず、SELECTコマンドを実行したことろで
下記のエラーが出ていました。

0x8000FFFF(E_UNEXPECTED)

パーティションを分けたということでしたので、
(OracleはCドライブに入っている)
PATHの設定などがおかしくなっているのかと思い、
環境変数のPATHを確認したり、ORACLE_HOMEを設定してみたりしましたが
解決せず。。

ネットで同様の事例がないかを調べてみたところ、
同様の現象の質問をされている方に対して、アクセク権の問題ではないか。との
回答でいろいろ試行錯誤されており、、
その方は最終的に今までCドライブにOracleをインストールしていたのを
Dドライブにインストールしてみたら回避できたとありました。

そこで、私も、客先パソコンは、CドライブとFドライブに分けていらっしゃたので
FドライブにOracle11gをインストール。
でも、それだけでは、現象は回避されず

接続のプロバイダを下記の「MSDAORA」から
Provider=MSDAORA
「OraOLEDB.Oracle」に変更し
Provider=OraOLEDB.Oracle

正常に動作するようになりました。

結局、原因はわからないままですが
この対応で使っていただくことになりました。

 

[LDAP初心者]パスワードポリシー設定

前回のエントリ追加にて
ディレクトリツリーにユーザを追加することはできました。

そのユーザにパスワードポリシー
(パスワード有効期限、アカウントロックなど。。)
を設定することになりました。

設定する項目は次の項目
■共通設定
・パスワード有効期限(pwdMaxAge)
・パスワード有効期限切れ警告(pwdExpireWarning)
■ユーザ毎に取得する項目
・パスワード変更日時(pwdChangedTime)
・アカウントロック(pwdAccountLockedTime)
・初回パスワード(pwdReset)

上記項目の属性をエントリに追加しようと
探してみましたが、、見つからず。。。

調べてみたところ、
OpenLdapのDefaultでは
パスワードポリシーのオブジェクトクラスは設定されていないため
自分で初期設定ファイル(slapd.conf)に記述を追加しなければ
いけないとのこと。。。

ネットで調べた情報を参考に、
初期設定ファイル(slapd.conf)に下記の記述を追加してOpenLdapを再起動

===========================================================
# schema 追加
include         ../etc/openldap/schema/ppolicy.schema

#index記述の下に
# Password Policy
overlay ppolicy
ppolicy_default “cn=Standard Policy,ou=Policies,dc=my-domain,dc=com”
ppolicy_use_lockout
===========================================================

再起動後、下記のLDIFファイルを作成し
共通パスワードポリシー設定として登録

■ppolicy_ou.ldif
————————————————————————
#top level of organization
dn: ou=Policies,dc=my-domain,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Policies
————————————————————————

■policy.ldif
————————————————————————
dn: cn=Standard Policy,ou=Policies,dc=my-domain,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicy
cn: Standard Policy
pwdAttribute: userPassword
pwdMaxFailure: 3
pwdMustChange: TRUE
pwdMinLength: 6
pwdInHistory: 1
pwdCheckQuality: 1
pwdMinAge: 0
pwdLockout: TRUE
pwdMaxAge: 2592000
pwdExpireWarning: 86400
pwdReset: TRUE
————————————————————————

登録はエントリ追加と同様にコマンドプロンプトより管理者ユーザで
「ldapadd」コマンドを実行

ldapadd -x -W -D “cn=Manager,dc=my-domain,dc=com” -f ppolicy_ou.ldif
ldapadd -x -W -D “cn=Manager,dc=my-domain,dc=com” -f policy.ldif

パスワードポリシーの共通設定は
正常に登録できました。

 

[LDAP初心者]エントリ追加

GUI操作の管理ツール「LdapAdmin」で
ユーザを追加していこうと思い、
「LdapAdmin」を起動して、接続&管理者ユーザで認証しようとしたところ

”オブジェクトクラスが存在しません。”

のエラーが表示され、接続まではうまくいっているみたいだけど
認証で失敗しているようでした。
(「接続テスト」は成功したので)
OpenLdapサーバを構築している方々のHPを参考にさせて
もらったところ、

先ずは、ディレクトリツリーの基点となるベース DN(suffix)を
登録する必要があるらしく、
下記のように「base.ldif」というLDIFファイルに
ベース DN(suffix)と管理者ユーザのエントリを定義し
登録してみました。

■base.ldif
————————————————————————
dn: dc=my-domain,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
objectClass: domainRelatedObject
objectClass: extensibleObject
o: MateAR.eu Corporation
description: The Example Corporation
dc: my-domain
associatedDomain: my-domain.com

dn: cn=Manager,dc=my-domain,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager
————————————————————————
登録はコマンドプロンプトより管理者ユーザで
「ldapadd」コマンドを実行

ldapadd -x -W -D “cn=Manager,dc=my-domain,dc=com” -f base.ldif

実行すると、パスワードを聞かれるので
管理者ユーザのパスワードを入力
ベース DN(suffix)が登録されたため
「LdapAdmin」で接続&管理者ユーザでの認証ができるようになりました。
ちなみにコマンドプロンプトは
OpenLDAPをインストールした際に、「OpenLDAP Command Line」という
ツール(?)がインストールされており、
実行すると、OpenLDAPの「bin」フォルダのパスに移動した状態で
コマンドプロンプトが起動されます。

後は、ベース DN(suffix)の下にグループを作成したりユーザを作成したり
作りたいディレクトリツリーに合わせて作成していくことになります。

「LdapAdmin」のGUI操作でエントリを作っていくか
今回追加したように、作成したいエントリをLDIFファイルに記述し
「ldapadd」コマンドで追加していきます。

LDIFファイルの記述方法を理解できたら
「ldapadd」コマンドでの追加がいいかなと思いました。

次回はパスワードポリシーの設定について
書いてみたいと思います。

[LDAP認証初心者]LDAP管理ツール

前回、テスト環境用のOpenLDAPサーバを立ち上げ
ディレクトリツリーにテストユーザを追加していこうと思いましたが

OpenLDAPにはGUIで操作できる管理ツールが用意されたいないため
エントリの登録,検索など、コマンドラインで入力しないといけないのは大変なので
GUIの管理ツールを探してみました。

■LdapAdmin

http://www.ldapadmin.org/

EXEファイルがダウンロードできるので
インストールなしで、そのまま起動して使用できます。

ディレクトリエントリを登録した後の画面がこんな感じ
ldapAdmin

エントリの登録も結構、簡単にできました。
ただ、LDAPのプロトコルをまだよくわかっていないため
どのような項目を登録すればいいのかは勉強しながら登録していく
必要がありましたが。。

他にも
■LDAP Broser/Editor
■JXplorer

というGUI管理ツールがあるようです。
「LDAP Broser/Editor」が使いやすいと書かれている方が
多かったような気がします。

次回はいよいよユーザを追加していきたいと思います。

[LDAP認証初心者]OpenLDAPインストール

LDAP認証のテスト環境ということで
自分のPC(Window7)にOpenLDAPをインストールすることになりました。

1.SourceForgeさんのサイトより「OpenLDAP for Windows」を
ダウンロードしてインストール

http://sourceforge.jp/projects/sfnet_openldapwindows/

2.LDAP初期設定ファイルを自分が構築したいディレクトリエントリに合わせて変更
C:\OpenLDAP\etc\openldap\slapd.conf

========================================================
database bdb
suffix  “dc=my-domain,dc=com”
rootdn  “cn=Manager,dc=my-domain,dc=com”
rootpw  {SSHA}ELYEVFER2s6yqWugfOzoIpJZJ09cO6dN
========================================================
suffix ・・・ディレクトリツリーのルート
rootdn・・・管理者ユーザDN
rootpw・・・管理者パスワード(上記は暗号化されたパスワード)

今回は、管理者パスワードだけわりやすくするために
暗号化されていないテキスト文字に変更しました。

3.OpenLDAP起動
スタートメニューより「Start LDAP Server」を起動
DOS窓が開いてなんとか起動できたようです。

LDAP起動

ちなみに、LDAPを終了する時は、Ctrl+C を押すと下記のように
「バッチジョブを終了しますか?(Y/N)」と聞いてくるので「Y」でEnterキーを押すと
終了します。
ldap終了

次回は、ディレクトリツリーにユーザ追加をしていきたいと思います。