You need to sign in to do that
Don't have an account?

Sitesの自作ログイン画面について
今回Sitesを利用し、カスタムオブジェクトに登録されてるユーザのみ
ログイン可能となるログイン画面を作成したいと考えています。
ログイン画面の項目は「ログインID」と「パスワード」です。
その際に、カスタムオブジェクトを「ログインID」と「パスワード」で検索するのですが
セキュリティ上、カスタムオブジェクトの「パスワード」項目の型を暗号化テキストにしたいと考えています。
暗号化テキストを検索条件としてSOQLを発行すると
「field 'xxxxxxxxx' can not be filtered in query call」と出てしまいます。
暗号化テキストを検索条件として使用することは不可能でしょうか?
あとついでになんですが、おそらくコスト(ライセンス数削減)のために自作のログイン画面を作って居るのではないかと思いますが、あまりオススメしません。
理由としては
・ログイン時間やIPアドレスの制限、共有ルール、プロファイル等、権限設定の作りこみが必要になる
・今後Force.comユーザにとって良い機能が追加(例えばOAuthとか、Facebookでのログイン(Auth provider))が追加されても恩恵が受けられない
・Sitesで自作の場合はsalesforce.com側ではログイン処理として認識しない(タダのAnonymousリクエストと判断)ので、IDS等のsalesforce.comが普段から行なっているセキュリティチェックの恩恵を受けられない
等があります。
色々事情があるとは思いますが、ご検討頂ければ。
All Answers
はい。暗号化項目は検索結果に含めることはできますが、検索条件に含めることはできません。
https://developerforcejapan.my.salesforce.com/help/doc/ja/fields_about_encrypted_fields.htm#topic-title
ヘルプ引用ですが
"暗号化項目は、検索することはできませんが、検索結果に含めることはできます。"
とあります。
ご回答ありがとうございます。
検索結果として取得した場合に、暗号化された情報を複合化することは
可能でしょうか?
可能であった場合に、どのような手順になりますでしょうか?
ご存知でしたらご教授願います。
暗号化項目の値については、Apexクラス内でSOQLで取得した場合には、その時点で複合されています。
コード内で、他の値などと比較してみれば、複合された値が利用できていることが確認できると思います。
(コードを書く人間から見たら少なくともそう見える、ということがわかっていれば良いと思っています。内部構造的にどうなっているかは知りません。)
このトピックを見る限り今回は関係ないと思いますが、暗号化項目の値を表示する場合、表示方法(VFページにoutputFieldで表示するなど)によって実行ユーザーに「暗号化されてデータの参照」権限が必要になります。
また、開発者コンソールでSOQLを使って検索する場合にも「暗号化されてデータの参照」権限がないと値が表示されません。
あとついでになんですが、おそらくコスト(ライセンス数削減)のために自作のログイン画面を作って居るのではないかと思いますが、あまりオススメしません。
理由としては
・ログイン時間やIPアドレスの制限、共有ルール、プロファイル等、権限設定の作りこみが必要になる
・今後Force.comユーザにとって良い機能が追加(例えばOAuthとか、Facebookでのログイン(Auth provider))が追加されても恩恵が受けられない
・Sitesで自作の場合はsalesforce.com側ではログイン処理として認識しない(タダのAnonymousリクエストと判断)ので、IDS等のsalesforce.comが普段から行なっているセキュリティチェックの恩恵を受けられない
等があります。
色々事情があるとは思いますが、ご検討頂ければ。