ブログ

2021/12/06
【プリザンター】 番外編)バージョン1.2でのAD連携不具合(1.2.20で解消)

プリザンター1.2.19以前でのAD連携不具合の内容

こんにちは、CCS田中です。

同じような方がいらっしゃったら参考にしてほしいという思いで番外編で記載しておきます。
バージョン1.2.19までをご利用の方は参考にしてください。1.2.20で修正されておりますので、1.2.20以降にバージョンアップすることで不具合は解消されます。

2021年7月にプリザンター1.2がリリースされ、すぐにバージョンアップしたところAD連携ができないという問題がありました。
これについては、1.2.1で修正いただき無事解決したのですが、実は一部不具合が残っていたようでSyncByLdapの同期コマンドで
エラーが出ていました。つまりADとの同期が失敗していたのです。

バージョンアップ後に普通に利用できており、Syslogまで確認していなかったため気づかなかったのですが、SyncByLdapコマンドでの同期時にSyslogテーブルのレコードに以下のエラーメッセージが記録されていました。

「一意インデックス 'Unique_4913169f110328d22e4e348397c7cae1f73df8339a703306c3e229875cdac52b' を含むオブジェクト 'dbo.Users' には重複するキー行を挿入できません。重複するキーの値は (to_suxxxx) です。一意インデックス 'Unique_4913169f110328d22e4e348397c7cae1f73df8339a703306c3e229875cdac52b' を含むオブジェクト 'dbo.Users' に」

最初は、Authentication.jsonの記載が間違っているのではないかと、試行錯誤しながら調べたのですが原因がわからず。インプリム社に助けていただき原因が判明しました。

不具合の原因

今回の不具合は、プリザンター1.2が .Net Core版と統合されたことに起因しています。
.Net Core版はPostgreSQL、.net Framework版はSQL Serverで動作させていますが、このDBの違いにより問題が発生してました。具体的には以下の通りです。

PostgreSQL:ログインIDの検索文字列の大文字小文字を区別する。
SQL Server:ログインIDの検索文字列の大文字小文字を区別しない。

この違うがあり、1.2版に統合したときにPostgreSQLでも大文字小文字を区別しないようにするために、イコール検索からLIKE検索に変更を行ったとのことです。

.net Framework版:イコール検索を行っている。
1.2版:LIKE検索を行っている。

これにより上記のDBによる大文字小文字の検索結果の違いは解決したのですが、一つ問題がありました。
それは、SQL Serverでは「_」(アンダースコア)が任意の1文字のワイルドカード扱いとなってしまうということです。
アンダースコアをログインIDに使用していなければ問題はないのですが、アンダースコアを使用している場合で、かつ、アンダースコアとは別の文字を使用&他の文字列は同じという場合に問題が発生します。
例として、「a_abe」と「aiabe」というログインIDが存在した場合に、問題が発生するというものです。

最終的にはアンダースコアを特殊文字扱いとしてエスケープ処理することで回避されたとのことです。
ということで、最新バージョンでは不具合は解消されておりますので、もし不具合に遭遇されたかたは1.2.20以降にバージョンアップをしてみてください。

まとめ

さて、いかがでしたか?

プリザンターのバージョンアップ速度が速く、バージョンアップには既存の動作確認も必要なため、すぐにバージョンアップができる方も少なく、バージョン1.2.19以前を使われている方もいらっしゃるかと思います。その場合でAD連携している方は本情報を参考にしてください。


導入の支援、スクリプト開発などでお困りの場合は、当社で支援もいたします。プリザンター逆引き辞典PDF版やスタイル・スクリプトサンプル集PDF版の販売もしております!

☆☆ブログ内容への質問や追加説明をご希望の方は
【問い合わせフォーム】 こちら からお気軽にお問い合わせください☆☆

PAGE TOP