2021/05/24

SalesforceにおけるsetPasswordとは?設定方法や注意点をご紹介

 
  

SalesforceのsetPasswordとは?

SalesforceのsetPasswordとは、特定のユーザーに指定されたパスワードの引数を設定する機能のことです。画面から設定することも開発者コンソールでプログラミングコードを使用して設定することも可能です。 例えば、1ヶ月や1年、半年など一定の期間でセキュリティのためにIDやパスワードを変更する際に使用します。Apexを使用して設定することが多いですが、C#やJavaを使用する方法もあるのです。 今回は、画面から設定する方法と開発者コンソールからプログラミング技術を使用して設定する方法を分けて紹介します。注意点に関してもサンプルを用いて説明していきます。また、パスワードポリシーに関しても画面設定の中で紹介していきましょう。

SalesforceのsetPasswordについての概要

SalesforceでsetPasswordを開発者コンソールにて設定する方法について説明します。Salesforce setPasswordの構文は以下になります。
SetPasswordResult setPasswordResult = connection.setPassword(ID userID, string password);
ユーザーやセルフサービスユーザーのパスワード設定にsetPassword()を使用してパスワードを変更する方法です。例えば、クライアントとなるアプリケーションが、各ユーザーのパスワードを指定してもらいます。 システム管理者がユーザーパスワード変更のためにsetPassword()を使用するのです。

Javaを使用したサンプルコード

以下が、Javaを使用したサンプルコードです。ユーザーIDをパスワードパラメータで受け取って、指定のユーザーパスワードをsetPassword()で設定したサンプルです。
public void doSetPassword(String userId, String newPasswd) {
   try {
      SetPasswordResult result = connection.setPassword(userId, newPasswd);
      System.out.println("The password for user ID " + userId + " changed to "
            + newPasswd);
   } catch (ConnectionException ce) {
      ce.printStackTrace();
   }
}

C#を使用したサンプルコード

C#を使用したサンプルコードになります。ユーザーIDをパスワードパラメータで受け取って、指定のユーザーパスワードをsetPassword()で設定したサンプルです。
public void doSetPassword(String userId, String newPasswd)
{
   try
   {
      SetPasswordResult result = binding.setPassword(userId, newPasswd);
      Console.WriteLine("The password for user ID " + userId + " changed to "
            + newPasswd);
   }
   catch (SoapException e)
   {
      Console.WriteLine("An unexpected error has occurred: " +
                        e.Message + "\n" + e.StackTrace);
   }
}

SalesforceのsetPasswordの注意点

SalesforceのsetPasswordについていくつか注意点を説明します。パスワードを変更する際は、設定方法に気を付けるようにしましょう。 まず、組織のパスワードポリシーは、「セルフリセットに setPassword() API を使用することを許可」という項目を有効にしておくようにしましょう。設定しない場合、ユーザーが自分でパスワードを変更できなくなってしまいます。 もしもパスワードをユーザーが設定できないようにしたいのであれば、changeOwnPassword()を使用します。パスワードの変更前にユーザーの現在のパスワードが確認可能です。 クライアントアプリケーションは、ユーザーのパスワードを変更するには必要なアクセス権限でログインされていることが必要になります。また、APIでランダムに作られたパスワードをリセットしたいときは、resetPassword() が必要です。

setPasswordが使えないユーザーについて

SalesforceのsetPassword()は基本的にApexクラスを使用して変更処理を行います。SalesforceのsetPassword()は、ユーザーIDと新しく設定したいパスワードを引数として渡します。 しかし、setPassword()を使用できないユーザーもいるのです。setPassword()の基本的な構文は以下になります。
System.setPassword(UserInfo.getUserId(), newPassword);
例えば、社内のユーザーやカスタマーユーザーはエラーが起きず、問題ないく変更ができたとしましょう。しかし、コミュニティユーザーはパスワードの変更ができないとします。 原因としては、サイトユーザーと同じとシステムに見なされていたなどほかのユーザーと同一視されてしまう場合があります。構文があっている場合は、他の視点で原因を探るといいでしょう。

ユーザーに仮パスワードを設定

SalesforceのsetPasswordでユーザーに一括で仮パスワードを設定する方法と注意点について説明します。 パスワードリセットを行う際にユーザーにメールを送れない、ログイン可能なIPとメールのネットワーク範囲が異なる、同じ仮パスワードを一括で設定したいなど理由はさまざまです。ユーザーパスワードを設定する場合は、開発者コンソールから設定します。 開発者コンソールから「デバッグ」、「Open Execute Anonymous Window」で匿名性のApexを設定しましょう。一括で行う場合は下記サンプルを参考にしましょう。
List users = [SELECT Id, Username
    FROM User
    WHERE isActive = true
    ORDER BY Username
];
for(User u : users){
    System.setPassword(u.Id, 'Salesforce0000');
}

一括で仮パスワードを設定する注意点

一括で仮パスワードをユーザーに設定したい場合は、いくつか注意点があります。まず、setPassword()を使用して一括でユーザーに仮パスワードを設定するには、人数に制限があります。 アクティブユーザーが151人以上いる場合、ガバナ制限に引っ掛かり、エラーが発生するのです。エラーは「System.LimitException: Too many DML statements: 151」です。 理由としては、パスワードを設定のために各呼び出しで1つのDMLステートメントとされるため、150人より多い人数では、機能ができないためエラーが起こります。また、setPassword()の一括で行うパスワードの変更にはガバナ制限にも気を付ける必要があります。 パスワードを変更したくないユーザーまでパスワードを変更してしまう場合があるのです。失敗しないよう、注意して行うようにしましょう。

SalesforceのsetPasswordを活用しよう

今回はSalesforceのsetPasswordについて紹介しました。 SalesforceのsetPasswordは、パスワードやIDを変更する際に使用します。1ヶ月、3ヶ月、半年、1年などの期間セキュリティのために設定、変更するのに使用することもあります。今後、使用する機会もあるので、ここで活用できるようにしましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】