在众多企业的日常运营中,Active Directory(AD)扮演着核心角色,负责管理和维护员工账户。然而,密码重置作为IT支持团队的常规工作之一,往往既耗时又繁琐。虽然一些商业解决方案和通过Windows服务器上RDS服务可以应对密码修改的需求,但这些方法可能带来额外的成本和局限性。在这种情况下,探索开源且免费的替代方案变得尤为重要,PassCore正是这样一种解决方案。
PassCore是一个基于Web的自助服务密码更改工具,它允许用户在Active Directory或LDAP环境中轻松地自行更改密码,前提是他们的账户未被禁用。这一工具由Unosquare开发,采用C#语言编写,并利用ASP.NET Core框架与Material UI(React组件)精心打造用户界面。PassCore的一个显著优势是其跨平台兼容性:它不仅能够在Windows和Linux服务器上运行,而且还支持通过Docker进行部署,这使得它能够在各种不同的操作系统和环境中灵活应用。
遗憾的是,PassCore项目的仓库在2023年6月2日被其所有者归档,目前只能读取,不再接受更改或贡献。尽管项目已归档,但其仍然是一个强大的自助密码修改工具,值得企业探索和利用,以优化其密码管理流程。以下将介绍如何在IIS中部署该项目
前提条件:
- 服务器已经加入Windows AD域
- 服务器上已经安装并且正常运行IIS
- 安装.NET Core 3.1 (SDK / HOSTING)
地址: https://dotnet.microsoft.com/zh-cn/download/dotnet/3.1
dotnet-sdk:https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-3.1.426-windows-x64-installer
dotnet-hosting:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-3.1.32-windows-hosting-bundle-installer
开始部署
-
下载PassCore
下载地址:https://github.com/unosquare/passcore/releases
建议下载PassCore423版本,PassCore424这边部署下来后有个问题,即使密码修改成功了,仍然后报错。
-
将上一步下载的压缩包解压到
C:\PassCore
或者其他合适的位置
-
打开IIS管理器,右击“应用程序池”,选择“添加应用程序池”
-
在弹出的窗口中,在“名称”下输入
PassCore Application Pool
,在“.NET CLR版本”下选择无托管代码
,在“托管管道模式”下选择集成
最后,勾选“立即启动应用程序池”。设置完所有后单击“确定”。
-
在刚刚创建的应用程序池上右击,然后选择
高级设置...
。将“启动模式”更改为始终运行
,将“闲置超时(分钟)”更改为0
。单击“确定”。这将确保PassCore在长时间不活动后仍能保持响应。
-
回到您的IIS管理器,右键单击“站点”,然后选择“添加网站”。
-
弹出的对话框。在“站点名称”下输入
PassCore
。在“应用程序池”下单击“选择”,并确保您选择了PassCore Application Pool
。在“物理路径”下,单击省略号(…),导航到您提取PassCore的文件夹(步骤二解压的路径),修改端口号为8080
。
-
选择上一步新建的站点,点击右侧浏览网站
浏览*:8080 (http)
-
成功部署,得到以下结果,但还不能正常使用,需要根据实际情况对配置文件进行配置。
-
配置文件位于步骤二解压的目录下的
appsettings.json
,可以根据自己实际情况修改配置,以下是这边测试的配置,仅供参考。
-
修改完配置文件后,至IIS管理器中重启站点,即可生效。如果一切设置正确,应该能够在浏览器中正常使用PassCore来完成自助修改AD密码了。
重要:
不要在没有SSL证书的情况下提供此网站到生成环境中,因为请求和响应将以明文传输,攻击者可以轻松检索这些消息并收集用户名和密码。
总结
PassCore旨在提供一个简单、易用且安全的解决方案,帮助组织管理用户的密码更改流程,同时减少IT支持团队的工作负担。由于其开源和免费的属性,它特别适合预算有限或希望节省成本的组织使用。开发者可以通过项目的GitHub页面下载源代码,并根据自己的需求进行定制和扩展。
参考:
A self-service password management tool for Active Directory
https://github.com/unosquare/passcore