Auth0のパスワードポリシーを満たすパスワード文字列をNode.js (generate-password) で生成する

2021.06.25

こんにちは、CX事業本部の若槻です。

以前の下記エントリでAuth0 Management APIのNode.js向けSDKのcreateUserを使用してユーザーを作成する方法を紹介しました。

この時、createUserのパラメーターではpasswordの指定が必須となります(指定なしの場合はエラーとなる)が、固定の文字列を指定するわけにはいかないので、ランダムなパスワード文字列を生成する仕組みが別途必要となります。

今回は、Auth0におけるユーザーのパスワードポリシーを満たすパスワード文字列をNode.js (generate-password) で生成してみました。

Auth0のパスワードポリシーの強度

Auth0のパスワードポリシーの強度には下記の5段階があり、既定ではGOODが使用されます。

  • NONE:Non-empty password required
  • LOW:Must have 8 characters in length
  • FAIR:Lower case (a-z), upper case (A-Z) and numbers (0-9)
  • GOOD:Special characters (!@#$%^&*)
  • EXCELLENT:No more than 2 identical characters in a row

このうちLOWFAIRGOODを満たすパスワードの作成をそれぞれ行ってみます。

やってみた

今回パスワードの生成にはnpmパッケージであるGenerate Passwordを使用します。

未導入の場合はインストールします。

% npm i generate-password

Node.jsで各ポリシーを満たすパスワード生成を行います。

var generator = require('generate-password');

LOW

var params = {
  length: 8, //文字長指定
}

generator.generate(params)

//VwmiWZzQ
//WgXwVikT
//TkSNToHl

FAIR

var params = {
  length: 8, //文字長指定
  numbers: true, //数字含む
  lowercase: true, //英小文字含む
  uppercase: true, //英大文字含む
  strict: true, //各文字種類から最低1文字ずつ使用
}

generator.generate(params)

//wJxTX9ch
//jOiAx6KB
//3iim1MAW

GOOD

var params = {
  length: 8, //文字長指定
  numbers: true, //数字含む
  symbols: true, //記号含む
  lowercase: true, //英小文字含む
  uppercase: true, //英大文字含む
  exclude: '()+_-=}{[]|:;"/?.><,`~', //記号は !@#$%^&* のみ使用
  strict: true, //各文字種類から最低1文字ずつ使用
}

generator.generate(params)

//tR^3$cE%
//S!LRFxK7
//h9sxl*6T

おわりに

Auth0におけるユーザーのパスワードポリシーを満たすパスワード文字列をNode.js (generate-password) で生成してみました。

EXCELLENTの2文字以上同じ文字を連続させないという条件の文字列はgenerate-passwordだけだと生成できないので今回は省きました。もしやってみたという方がいたらスクリプトを教えて頂けたら嬉しいです!

以上