日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

IdentityServer4-从数据库获取User登录并对Claims授权验证(五)

發布時間:2023/12/4 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IdentityServer4-从数据库获取User登录并对Claims授权验证(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節將在第四節基礎上介紹如何實現IdentityServer4從數據庫獲取User進行驗證,并對Claim進行權限設置。


一、新建Web API資源服務,命名為ResourceAPI

(1)新建API項目,用來進行user的身份驗證服務。

(2)配置端口為5001

安裝Microsoft.EntityFrameworkCore

安裝Microsoft.EntityFrameworkCore.SqlServer

安裝Microsoft.EntityFrameworkCore.Tools

(3)我們在項目添加一個 Entities文件夾。

新建一個User類,存放用戶基本信息,其中Claims為一對多的關系。

其中UserId的值是唯一的。

新建Claims類

繼續新建 UserContext.cs

(4)修改startup.cs中的ConfigureServices方法,添加SQL Server配置。

完成后在程序包管理器控制臺運行:Add-Migration InitUserAuth

生成遷移文件。

(5)添加Models文件夾,定義User的model類和Claims的model類。

在Models文件夾中新建User類:

新建Claims類:

做Model和Entity之前的映射。

添加類UserMappers:

類UserContextProfile:

(6)在startup.cs中添加初始化數據庫的方法InitDataBase方法,對User和Claim做級聯插入。

(7)在startup.cs中添加InitDataBase方法的引用。

運行程序,這時候數據生成數據庫UserAuth,表Users中有一條UserName=zhubingjian,Password=123的數據。


?

二、實現獲取User接口,進行身份驗證

(1)先對API進行保護,在Startup.cs的ConfigureServices方法中添加:

并在Configure中,將UseAuthentication身份驗證中間件添加到管道中,以便在每次調用主機時自動執行身份驗證。

app.UseAuthentication();

(2)接著,實現獲取User的接口。

在ValuesController控制中,添加如下代碼:

好了,資源服務器獲取User的接口完成了。

(3)接著回到AuthServer項目,把User改成從數據庫進行驗證。

找到AccountController控制器,把從內存驗證User部分修改成從數據庫驗證。

主要修改Login方法,代碼給出了簡要注釋:

可以看到,在IdentityServer4更新后,舊版獲取tokenResponse的方法已過時,但我按官網文檔的說明,使用新方法(注釋的代碼),獲取不到信息,還望大家指點。

官網鏈接:https://identitymodel.readthedocs.io/en/latest/client/token.html

所以這里還是按老方法來獲取tokenResponse。

(4)到這步后,可以把Startup中ConfigureServices方法里面的AddTestUsers去掉了。

運行程序,已經可以從數據進行User驗證了。

點擊進入About頁面時候,出現沒有權限提示,我們會發現從數據庫獲取的User中的Claims不起作用了。


?

三、使用數據數據自定義Claim

為了讓獲取的Claims起作用,我們來實現IresourceOwnerPasswordValidator接口和IprofileService接口。

(1)在AuthServer中添加類ResourceOwnerPasswordValidator,繼承IresourceOwnerPasswordValidator接口。

(2)ProfileService類實現IprofileService接口:

(3)發現代碼里面需要在ResourceAPI項目的ValuesController控制器中

添加根據UserId獲取User的Claims的接口。

(4)修改AuthServer中的Config中GetIdentityResources方法,定義從數據獲取的Claims為role的信息。

(5)在GetClients中把定義的mvc.profile加到Scope配置

(6)最后記得在Startup的ConfigureServices方法加上

.AddResourceOwnerValidator<ResourceOwnerPasswordValidator>()

.AddProfileService<ProfileService>();

?

運行后,出現熟悉的About頁面(Access Token后面加上去的,源碼上有添加方法)


?本節介紹的IdentityServer4通過訪問接口的形式驗證從數據庫獲取的User信息。當然,也可以寫成AuthServer授權服務通過連接數據庫進行驗證。

另外,授權服務訪問資源服務API,用的是ClientCredentials模式(服務與服務之間訪問)。

參考博客:https://stackoverflow.com/questions/35304038/identityserver4-register-userservice-and-get-users-from-database-in-asp-net-core

源碼地址:https://github.com/Bingjian-Zhu/Mvc-HybridFlow.git

相關文章:

  • 從Client應用場景介紹IdentityServer4(一)

  • IdentityServer4-EF動態配置Client和對Claims授權(二)

  • IdentityServer4-客戶端的授權模式原理分析(三)

  • IdentityServer4-MVC+Hybrid實現Claims授權驗證(四)

  • 基于IdentityServer4 實現.NET Core的認證授權

  • IdentityServer4與ocelot實現認證與客戶端統一入口

  • 使用Dapper持久化IdentityServer4


原文地址:?https://www.cnblogs.com/FireworksEasyCool/p/10181681.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com


總結

以上是生活随笔為你收集整理的IdentityServer4-从数据库获取User登录并对Claims授权验证(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。