戰(zhàn):Windows SMB 網(wǎng)絡(luò)共享與 CredHub 憑證管理完整指南)
Steeltoe Samples 文件共享實(shí)戰(zhàn)Windows SMB 網(wǎng)絡(luò)共享與 CredHub 憑證管理完整指南【免費(fèi)下載鏈接】SamplesSteeltoe samples and reference application collection項(xiàng)目地址: https://gitcode.com/gh_mirrors/samples40/SamplesSteeltoe Samples 是 GitHub 加速計(jì)劃 samples40 收錄的 Steeltoe 示例與參考應(yīng)用集合其中 FileShares 文件共享示例專門(mén)演示如何在 ASP.NET Core 應(yīng)用中安全地管理帶憑證的 Windows SMB 網(wǎng)絡(luò)共享連接。無(wú)論你是剛接觸 Steeltoe 的新手還是想在 Cloud Foundry 上落地 CredHub 憑證管理的開(kāi)發(fā)者這篇實(shí)戰(zhàn)指南都能帶你一步步跑通創(chuàng)建共享 → 上傳文件 → 云上部署的全流程。Steeltoe Samples 文件共享示例能做什么這個(gè)文件共享示例FileShares是 Steeltoe Samples 中很有代表性的一員核心能力包括文件上傳通過(guò)網(wǎng)頁(yè)表單把文件寫(xiě)入 Windows SMB 網(wǎng)絡(luò)共享并自動(dòng)重命名避免非法字符文件列表與刪除查看共享目錄中的文件并支持安全的刪除操作憑證管理從 Cloud Foundry 的 CredHub 服務(wù)綁定中讀取賬號(hào)密碼代碼里不硬編碼任何密鑰健康檢查借助 Steeltoe Actuator 的磁盤(pán)空間健康檢查實(shí)時(shí)監(jiān)控共享目錄的可用空間對(duì)應(yīng)源碼位于FileShares/src/FileSharesWeb/核心邏輯集中在Program.cs、FileShareConfiguration.cs與Controllers/FilesController.cs中。文件共享實(shí)戰(zhàn)前的環(huán)境準(zhǔn)備新手必看開(kāi)始之前請(qǐng)確認(rèn)滿足以下條件一臺(tái)Windows 機(jī)器并安裝 .NET 10 SDK一個(gè)已存在的 Windows 文件共享或者本機(jī)管理員權(quán)限用于創(chuàng)建共享可選部署到云端時(shí)需要 Tanzu Platform for Cloud Foundry 及其 Windows 支持如果沒(méi)有現(xiàn)成的共享目錄別擔(dān)心示例自帶一鍵腳本下面馬上介紹。最快配置方法一鍵創(chuàng)建 Windows SMB 網(wǎng)絡(luò)共享 ?示例在FileShares/scripts/目錄下提供了 PowerShell 腳本一條命令即可完成共享創(chuàng)建。以管理員身份打開(kāi) PowerShell進(jìn)入scripts目錄后運(yùn)行add-user-and-share.ps1它會(huì)自動(dòng)幫你創(chuàng)建本地用戶默認(rèn)shareWriteUser用于 SMB 讀寫(xiě)創(chuàng)建共享目錄默認(rèn)c:\steeltoe_network_share創(chuàng)建 SMB 共享默認(rèn)名steeltoe_network_shareEveryone 可讀、指定用戶可寫(xiě)你也可以用參數(shù)覆蓋默認(rèn)值.\add-user-and-share.ps1 -ShareName steeltoe_network_share -SharePath c:\steeltoe_network_share -UserName shareWriteUser -Password thisIs1Pass!?? 該腳本必須在 Windows 管理員權(quán)限下運(yùn)行且運(yùn)行前請(qǐng)先審閱腳本內(nèi)容。創(chuàng)建完成后共享地址就是\\計(jì)算機(jī)名\steeltoe_network_share記下這個(gè) UNC 路徑下一步配置要用。本地運(yùn)行文件共享示例的詳細(xì)步驟第一步配置共享憑證示例通過(guò)appsettings.Development.json模擬了 Cloud Foundry 中 CredHub 服務(wù)綁定的格式vcap.services本地運(yùn)行時(shí)只需把location、username、password改成你自己的共享信息vcap: { services: { credhub: [{ name: sampleNetworkShare, credentials: { location: \\\\localhost\\steeltoe_network_share, username: shareWriteUser, password: thisIs1Pass! } }] } }第二步啟動(dòng)應(yīng)用在src\FileSharesWeb目錄下執(zhí)行dotnet run --launch-profile https第三步體驗(yàn)文件共享上傳功能打開(kāi)https://localhost:7032/files/upload即可一次上傳多個(gè)文件到共享目錄訪問(wèn)https://localhost:7032/files/list可以查看和刪除共享中的文件。上傳邏輯在Controllers/FilesController.cs中文件會(huì)以UPLOADED_時(shí)間戳_原文件名的格式落盤(pán)既避免重名也防止非法字符問(wèn)題。刪除操作還會(huì)校驗(yàn)路徑必須位于共享根目錄之內(nèi)防止越權(quán)刪除。深入理解應(yīng)用如何讀取 SMB 網(wǎng)絡(luò)共享憑證 整個(gè)憑證讀取鏈路非常清晰推薦照著源碼走一遍Program.cs中調(diào)用AddCloudFoundryConfiguration()把 Cloud Foundry 服務(wù)綁定注入配置系統(tǒng)FileShareConfiguration.cs從配置里查找名為sampleNetworkShare的credhub服務(wù)實(shí)例取出location、username、password構(gòu)建NetworkCredentialFileShareHostedService.cs啟動(dòng)時(shí)用WindowsNetworkFileShare建立連接并執(zhí)行一次寫(xiě)入再刪除的探測(cè)確保路徑和憑證有效如果憑證或權(quán)限不對(duì)應(yīng)用啟動(dòng)時(shí)會(huì)直接拋出異?!@種失敗即快速暴露的設(shè)計(jì)能讓問(wèn)題在第一時(shí)間被發(fā)現(xiàn)非常實(shí)用。CredHub 憑證管理的云上實(shí)踐在 Cloud Foundry 部署文件共享 ??本地跑通后云上部署的核心思路是把 SMB 憑證交給 CredHub 管理應(yīng)用從服務(wù)綁定中讀取。一鍵創(chuàng)建 CredHub 服務(wù)實(shí)例FileShares/scripts/cf-create-service.ps1腳本封裝了創(chuàng)建命令傳入共享地址、用戶名和密碼即可.\cf-create-service.ps1 -NetworkAddress \\localhost\steeltoe_network_share -UserName shareWriteUser -Password thisIs1Pass!腳本會(huì)把這些參數(shù)打包成 JSON調(diào)用cf create-service credhub default sampleNetworkShare -c ...存入 CredHub并在日志中把密碼打碼為REDACTED避免敏感信息泄露。推送應(yīng)用到 Cloud Foundry該示例僅支持 Windows 運(yùn)行因此需要先發(fā)布再推送dotnet publish -r win-x64 --self-contained cf push -f manifest-windows.yml -p bin/Release/net10.0/win-x64/publishmanifest-windows.yml中通過(guò)services: sampleNetworkShare把應(yīng)用與 CredHub 服務(wù)實(shí)例綁定這樣應(yīng)用在云端運(yùn)行時(shí)就會(huì)自動(dòng)獲得憑證綁定本地和云端使用同一套代碼。 獲取示例代碼git clone https://gitcode.com/gh_mirrors/samples40/Samples然后進(jìn)入FileShares目錄即可開(kāi)始。清理與常見(jiàn)問(wèn)題排查 實(shí)驗(yàn)結(jié)束后可用remove-user-and-share.ps1一鍵刪除共享、本地用戶和目錄同樣需要管理員權(quán)限。常見(jiàn)坑位提醒憑證沖突如果之前用 Windows 資源管理器打開(kāi)過(guò)共享再運(yùn)行示例會(huì)因同一用戶不能以多套憑證訪問(wèn)同一共享而失敗。執(zhí)行klist purge讓 Windows 忘記舊連接即可恢復(fù)權(quán)限不足應(yīng)用啟動(dòng)時(shí)報(bào)寫(xiě)入異常多半是shareWriteUser對(duì)共享目錄沒(méi)有寫(xiě)權(quán)限檢查New-SmbShare的-FullAccess參數(shù)總結(jié)通過(guò) Steeltoe Samples 的 FileShares 示例你可以完整掌握Windows SMB 網(wǎng)絡(luò)共享的連接管理、CredHub 憑證管理的服務(wù)綁定模式以及 ASP.NET Core 應(yīng)用在 Cloud Foundry 上的部署流程。這套憑證外置 配置注入的思路同樣適用于數(shù)據(jù)庫(kù)、消息隊(duì)列等其他帶憑證的服務(wù)值得反復(fù)研讀?!久赓M(fèi)下載鏈接】SamplesSteeltoe samples and reference application collection項(xiàng)目地址: https://gitcode.com/gh_mirrors/samples40/Samples創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考