iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0

分享主軸

  • 了解何謂認證與授權
  • 了解 Identity 運作原理
  • 了解 如何設置使用

認證與授權

身份認證:

  • 驗證此次請求的用戶身份是否正確。這個過程確保請求是由合法用戶發出的

授權:

  • 在身份認證成功後,根據用戶的身份決定其是否有權限訪問特定功能。這個過程確保用戶只能執行其被授權的操作

所以身分驗證與授權是兩件事情

運作原理

ASP.NET Core Identity 預設使用 Cookie 來管理身份驗證(Cookie本身是無狀態的)

  • 身份認證 (Authentication)原理

1. 頁面提交資訊:

用戶在登入頁面輸入其帳號和密碼

2. 驗證憑證並生成身份驗證 Cookie:

使用 Identity 框架內的方法來驗證用戶提交的資訊是否正確
如果正確,則認證成功,生成身份驗證 Cookie
(會生成一個身份驗證 Cookie,該 Cookie 包含用戶的身份資訊)

3. 保存 Cookie:

這個 Cookie 會附加到 HTTP 回應中,並發送到用戶的瀏覽器

4. 返回

當控制器方法完成並返回結果(例如 RedirectToAction),HTTP 回應會被發送到用戶的瀏覽器,包含身份驗證 Cookie (瀏覽器會保存這個身份驗證 Cookie,並在後續的每次請求中自動附加該 Cookie)

快速建立與使用

建立專案時,可以選擇驗證類行為個別帳戶(它會使用 ASP.NET Core Identity 來管理用戶帳戶和身份驗證)

https://ithelp.ithome.com.tw/upload/images/20240929/20133954pH9AI1vLZS.png

https://ithelp.ithome.com.tw/upload/images/20240929/20133954FMxpGtCZh8.png

此時,專案內的 program.cs 關於 Identity 基本設定都有,如果要移到別的連線資料庫內,也可以

移動到自己的資料庫步驟

  1. 更新連線字串
"ConnectionStrings": {
    "DefaultConnection": "Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;User Id=YOUR_USERNAME;Password=YOUR_PASSWORD;"
  }
  1. 配置 ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}
  1. 遷移並更新資料庫
Add-Migration InitialCreate
Update-Database

此時會看到資料庫內有產出的 Identity 所預設生成的資料表

https://ithelp.ithome.com.tw/upload/images/20240929/201339543kbiwRCRsz.png

頁面(以登入為示範)

https://ithelp.ithome.com.tw/upload/images/20240929/201339544rgP2ZDeR7.png

https://ithelp.ithome.com.tw/upload/images/20240929/20133954uIEsMmHFRt.png

補充其他

若沒有特別設定,比如 Cookie 資訊,則會以預設

  • ExpireTimeSpan
    預設 : 14 天
    說明:這是身份驗證 Cookie 的過期時間

  • SlidingExpiration
    預設:true
    說明:啟用滑動過期時間。表示每次用戶操作頁面時,過期時間將延長到設定的 ExpireTimeSpan
    例如,如果 ExpireTimeSpan 設為 14 天,則每次用戶活動都會將過期時間重置,變成新的 14 天

  • LoginPath
    預設:"/Account/Login"
    說明:用戶需要登入時重新指向的路徑

  • AccessDeniedPath
    預設:"/Account/AccessDenied"
    說明:這是用戶被拒絕訪問某資源時重定向的路徑。如果不設定,系統將使用這個預設路徑

  • Cookie.HttpOnly
    預設:true
    說明:設置 Cookie 為 HttpOnly,表示 Cookie 不能被客戶端腳本(如 JavaScript)訪問,增加了安全性
    防止 : 跨站腳本攻擊 (XSS)

  • Cookie.SecurePolicy
    預設:CookieSecurePolicy.SameAsRequest
    說明:這個選項決定 Cookie 是否僅在 HTTPS 上傳輸

附上參考教學文章說明
https://github.com/ThreeMammals/Ocelot/issues/1002

簡單統整今日重點

  • 了解 何謂身分驗證與授權
  • 了解 Identity 運作原理
  • 了解 如何快速實作出來

今日結語

初步認識 Identity 後,通過使用 Cookie 進行身份驗證和授權,可以更深入地理解 ASP.NET Core 內建的一套 Identity 機制。這套機制不僅提供了強大的身份驗證功能,還能夠靈活地管理用戶的授權和角色

一點一點認識 ASP .NET Core 有關的知識,加油!
明日繼續努力 ~

參考文章
https://learn.microsoft.com/zh-cn/aspnet/core/security/authentication/?view=aspnetcore-8.0


上一篇
Day 15 Swagger : 撰寫 API 文件
下一篇
Day 17 ASP.NET Core Data Protection : 資料保護
系列文
靠近 ASP .NET Core 一點點27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言