この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部の若槻です。
以前の下記エントリでAuth0 Management APIのNode.js向けSDKのcreateUser
を使用してユーザーを作成する方法を紹介しました。
この時、createUser
のパラメーターではpassword
の指定が必須となります(指定なしの場合はエラーとなる)が、固定の文字列を指定するわけにはいかないので、ランダムなパスワード文字列を生成する仕組みが別途必要となります。
今回は、Auth0におけるユーザーのパスワードポリシーを満たすパスワード文字列をNode.js (generate-password) で生成してみました。
Auth0のパスワードポリシーの強度
Auth0のパスワードポリシーの強度には下記の5段階があり、既定ではGOOD
が使用されます。
NONE
:Non-empty password requiredLOW
:Must have 8 characters in lengthFAIR
: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
このうちLOW
、FAIR
、GOOD
を満たすパスワードの作成をそれぞれ行ってみます。
やってみた
今回パスワードの生成には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だけだと生成できないので今回は省きました。もしやってみたという方がいたらスクリプトを教えて頂けたら嬉しいです!
以上