.NetCore源碼閱讀筆記系列之Security (四) Authentication & AddJwtBearer


接下來我們在來看下AddJwtBearer,這個與AddOpenIdConnect不太一樣,后者是遠程發起身份認證請求是一種主動發起式的,多用於web等客戶端,驗證發生在身份認證服務端,而前者是一種被動接受,比如接受一個Token並根據某種規則校驗,多用於服務性質的接口,而校驗發生在服務本生

與前面一樣,我們只關注JwtBearerHandler的處理即可

在JwtBearer中,我們可以通過自定義Token,並不一定需要接受來之Headers中 Authorization 中的 Bearer

先說第一種情況

 public virtual Task MessageReceived(MessageReceivedContext context) => OnMessageReceived(context);

        public virtual Task TokenValidated(TokenValidatedContext context) => OnTokenValidated(context);

我們重寫JwtBearerEvents中的相關方法就可以指定我們自己的Token接受來源以及校驗方式,這里需要注意的如果我們的服務需要跟對的用戶身份信息的話還需要將需要的身份信息寫入到token中以便於解析后寫入到Principal身份信息中,最后在代碼中處理業務

當然第二種方式就是通用的接受Headers中 Authorization 中的 Bearer,通過JwtBearer中的配置的信息SigningKeys、ValidIssuers 然后使用SecurityTokenValidators去讀取Token信息,如果OK 那么同之前一樣將身份信息寫到 Principal,如果需要保存Token,這里采用的就是 Token信息寫入到了 access_token 中,這里服務中如果需要得到這個access_token的話需要這樣來處理

  string token = await httpContextAccessor.HttpContext.GetTokenAsync("access_token");

通過得到這個token,我們就可以在一個服務中去請求其他的服務

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM