LoginSignup
2
5

More than 5 years have passed since last update.

passcore on Windows Server 2016

Last updated at Posted at 2019-04-06

passcore On Windows Server 2016

passcoreとは

passcoreとは、WebベースのUIでActive Directoryユーザのパスワードが変更出来るソフトウェアです。
オープンソースで開発されており、プロジェクトサイトは次のURLです。

前提条件

  • Active Directoryが構成済みであること
  • ドメインに参加したコンピュータで動作させること
  • Windows Server 2016でドメインを構成し、ドメインコントローラ上でpasscoreを動作させます。

ポイント

  • READMEに有るとおり、PowerShellを使う方法でさくっとインストール出来ますが、PowerShellスクリプトでは.NET Core Windows Server Hostingのバージョンが2.2.3を想定しており、READMEからリンクされている、2.1ではバージョンの差分があり、インストールに失敗します。

導入方法

  1. 役割と機能の追加ウィザードで、「Webサーバ(IIS)」をインストールします。
    細かいオプションはとりあえず、デフォルトのままで動作します。
  2. .NET Core 2.2.3 Windows Server Hostingをダウンロードし、インストールします。
  3. PowerShellを管理者権限で開き、次のコマンドを実行します。

    Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/unosquare/passcore/master/Installer.ps1'))
    
  4. 途中でメモ帳が出てきますが、とりあえず閉じるとインストール完了です。

動作確認

  1. http://ホストのIPアドレス:8080/ でアクセスすると、passcoreのWebUIが表示されます。
  2. 必要な項目を入力し、パスワードが更新できれば完了です。

各種設定

\passcore\appsettings.jsonが設定ファイルとなります。
日本語化もこのファイルで出来るので、こんな感じにしてみました。

appsettings.json
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "WebSettings": {
    "EnableHttpsRedirect": true
  },
  "AppSettings": {
    // The following options for AD Provider (remove if you don't use this Provider)
    "UseAutomaticContext": true, // Set true to allow PassCore to reset password using the same credentials, or false if you will fill the credentials below
    "RestrictedADGroups": [
      "Administrators",
      "Domain Admins",
      "Enterprise Admins"
    ], // Set the AD groups to restrict the use of PassCore
    "AllowedADGroups": [], // Set the AD Groups to allow PassCore, if the array is empty all the groups no-restricted above are allowed
    "IdTypeForUser": "UPN", // Possible values are "DN", "GUID", "Name", "SAM", "SID" and "UPN" (Default UPN)
    "UpdateLastPassword": false, // Set true to allow PassCore to  update the last password timestamp
    // The following options are for LDAP Provider (remove if you don't use this Provider)
    "LdapSearchBase": "ou=people,dc=example,dc=com",
    "LdapSecureSocketLayer": false, // Default for AD is true when using LDAPS 636
    "LdapStartTls": false, // Default for AD is true when using LDAP 389
    "LdapChangePasswordWithDelAdd": true,
    "LdapSearchFilter": "(sAMAccountName={Username})", // Another value: "(&(objectClass=person)(cn={Username}))"
    // General options (valid for both providers)
    "LdapHostnames": [ "" ], // Set your hostname(s)
    "LdapPort": 389, // Default for AD is 389, for LDAPS 636
    "LdapUsername": "", // Set the username or distinguish name (DN) to bind the LDAP server
    "LdapPassword": "", // Set the password for the username
    // デフォルトドメイン
    "DefaultDomain": "" // Set your default AD domain here, or non "@" logins will not work! Use empty value to allow user to set the domain. This option is ONLY available with UPN.
  },
  "ClientSettings": {
    "ValidationRegex": {
      "EmailRegex": "^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$",
      "UsernameRegex": "^[a-zA-Z0-9._-]{3,20}$"
    },
    "ShowPasswordMeter": true,
    "Recaptcha": {
      "SiteKey": "", // ReCAPTCHA public key: replace this! or leave empty if you don't need ReCAPTCHA
      "PrivateKey": "", // ReCAPTCHA private key: replace this! or leave empty if you don't need ReCAPTCHA
      "LanguageCode": "en"
    },
    // 認証にメールアドレスを利用するか
    // 利用しない場合、アカウント名の末尾にDefaultDomainが補完される
    "UseEmail": "true",
    "ApplicationTitle": "パスワードの変更 | セルフサービスアカウントマネージメントツール",
    "ChangePasswordTitle":  "パスワードの変更",
    "ChangePasswordForm": {
      "HelpText": "このツールで問題が発生している場合は、IT担当者へ連絡してください。",
      "UsernameLabel": "ユーザ名",
      "UsernameHelpblock": "あなたの組織のメールアドレスを入力してください。",
      "UsernameDefaultDomainHelperBlock": "あなたの組織のユーザ名を入力してください。",
      "CurrentPasswordLabel": "現在のパスワード",
      "CurrentPasswordHelpblock": "あなたの現在のパスワードを入力してください。",
      "NewPasswordLabel": "新しいパスワード",
      "NewPasswordHelpblock": "新しいパスワードを入力してください。",
      "NewPasswordVerifyLabel": "新しいパスワード(確認)",
      "NewPasswordVerifyHelpblock": "再度、新しいパスワードを入力してください。",
      "ChangePasswordButtonLabel": "パスワードの変更"
    },
    "ErrorsPasswordForm": {
      "FieldRequired": "この項目は必須です。",
      "UsernamePattern": "有効なユーザ名を入力してください。",
      "UsernameEmailPattern": "有効なメールアドレスを入力してください。",
      "PasswordMatch": "パスワードが一致していません。"
    },
    "Alerts": {
      "SuccessAlertTitle": "あなたのパスワードは変更されました。",
      "SuccessAlertBody": "すべてのドメインコントローラに変更が反映されるまでに少し時間がかかる場合があります。",
      "ErrorPasswordChangeNotAllowed": "あなたはパスワードの変更が許可されていません。IT担当者に連絡してください。",
      "ErrorInvalidCredentials": "ユーザ名もしくは現在のパスワードに誤りがあります。",
      "ErrorInvalidDomain": "入力されたドメインではログインできませんでした。",
      "ErrorInvalidUser": "ユーザ名もしくは現在のパスワードに誤りがあります。",
      "ErrorCaptcha": "あなたがロボットではないことを確認します。",
      "ErrorFieldRequired": "Fulfill all the fields",
      "ErrorFieldMismatch": "入力された新しいパスワードが一致しません。"
    }
  }
}

こんな時は

0X800708C5エラーで更新できない場合

パスワードの複雑さなどは満たしているのに、

Failed to update password: パスワードはパスワード ポリシーの要件を満たしていません。
パスワードの最短の長さ、パスワードの複雑性、およびパスワード履歴の要件を確認してください。
(Exception from HRESULT: 0x800708C5)

と言われる場合は、次の操作を行うことで回避が出来ます。
ただ、理由は良くわかってないので、自己責任で。

  1. ファイル名を指定して実行で「gpmc.msc」(グループポリシーの管理)を開きます。
  2. フォレスト → 「ドメイン」 → ドメイン名 → 「グループポリシーオブジェクト」 → 「Defaulte Domain Policy」を選択し、右クリックして編集を選びます。
  3. 「コンピュータの構成] → 「ポリシー」→「Windowsの設定」→「セキュリティの設定」→「アカウントポリシー」→「パスワードのポリシー」→「パスワードの変更禁止期間」を「0」に設定します。
  4. 管理者としてコマンドプロンプトを開き、「gpupdate /force」を実行します。
2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5