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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IdentityServer4-前后端分离的授权验证(六)

發(fā)布時(shí)間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IdentityServer4-前后端分离的授权验证(六) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上兩節(jié)介紹完Hybrid模式在MVC下的使用,包括驗(yàn)證從數(shù)據(jù)獲取的User和Claim對(duì)MVC的身份授權(quán)。本節(jié)將介紹Implicit模式在JavaScript應(yīng)用程序中的使用,使用Node.js+Express構(gòu)建JavaScript客戶端,實(shí)現(xiàn)前后端分離。本節(jié)授權(quán)服務(wù)和資源服務(wù)器基于第四和第五節(jié)。


?一、使用Node.js+Express搭建JavaScript客戶端

(1)首先需要Node.js環(huán)境

下載并安裝Node.js,官網(wǎng)下載地址:https://nodejs.org/en/?

輸入指令:node –v??檢測(cè)是否已安裝Node.js,已安裝會(huì)顯示安裝的Node.js版本

(2)安裝Express

打開cmd,輸入指令:npm install express-generator –g

輸入指令:express –h????已安裝express會(huì)顯示幫助文檔

(3)新建文件,創(chuàng)建JavaScript_Client應(yīng)用程序

新建文件夾(在D盤新建Express文件夾),cmd進(jìn)入該文件夾。

輸入:express JavaScript_Client???? 在當(dāng)前目錄下創(chuàng)建一個(gè)名為JavaScript_Client的應(yīng)用。目錄結(jié)構(gòu)如下:

(4)安裝依賴包

輸入:cd JavaScript_Client?? 進(jìn)入JavaScript_Client目錄

輸入:npm install?? 安裝依賴包

(5)啟動(dòng)并測(cè)試項(xiàng)目

輸入:npm start

瀏覽器打開:http://localhost:3000?

看到以下頁面證明成功了。


?

二、添加JavaScript客戶端測(cè)試代碼

(1)安裝oidc-client庫(kù)

輸入:npm install oidc-client –save

我們會(huì)發(fā)現(xiàn)在D:\express\JavaScript_Client\node_modules\oidc-client\dist? 有兩個(gè)js文件

我們只需使用這兩個(gè)文件。把這兩個(gè)文件復(fù)制到D:\express\JavaScript_Client\public\ javascripts 目錄下

(2)添加測(cè)試用的HTML文件

使用VSCode打開JavaScript_Client文件夾,在public(D:\express\JavaScript_Client\public)下新建index.html文件。添加幾個(gè)測(cè)試用的按鈕。

(3)添加測(cè)試的js文件

在public下新建app.js文件。

黏貼以下代碼

以下對(duì)app.js代碼進(jìn)行分析

App.js中l(wèi)og函數(shù)用來記錄消息

使用oidc-client庫(kù)中的UserManager類來管理OpenID連接協(xié)議。添加此代碼以配置和實(shí)例化UserManager:

接下來,UserManager提供一個(gè)getUser API來獲取用戶是否登錄到JavaScript應(yīng)用程序。返回的User對(duì)象有一個(gè)profile屬性,其中包含用戶的聲明。添加此代碼以檢測(cè)用戶是否登錄到JavaScript應(yīng)用程序:

接下來,我們要實(shí)現(xiàn)登錄、api和注銷功能。UserManager提供登錄用戶的signinRedirect和用戶登出的signoutRedirect。我們?cè)谏鲜龃a中獲得的用戶對(duì)象還有一個(gè)access_token屬性,可以使用該屬性對(duì)web API進(jìn)行身份驗(yàn)證。access_token將通過Bearer模式傳遞給Web API。添加以下代碼在我們的應(yīng)用程序中實(shí)現(xiàn)這三個(gè)功能:

(4)再新建一個(gè)callback.html。一旦用戶登錄到IdentityServer,這個(gè)HTML文件就是指定的redirect_uri頁面。它將完成OpenID Connect協(xié)議與IdentityServer的登錄握手。這里的代碼都由我們前面使用的UserManager類提供。登錄完成后,我們可以將用戶重定向回index.html頁面。添加此代碼完成登錄過程:

(8)修改服務(wù)端口為5003


?

三、修改授權(quán)服務(wù)配置,資源服務(wù)器允許跨域調(diào)用API

(1)修改授權(quán)服務(wù)配置

在AuthServer項(xiàng)目,打開Config.cs文件,在GetClients中添加JavaScript客戶端配置

(2)在資源服務(wù)配置允許跨域調(diào)用api

在ResourceAPI項(xiàng)目,打開Startup.cs文件中的ConfigureServices方法,配置CORS,允許Ajax調(diào)用從http://localhost:5003調(diào)用http://localhost:5001的Web API。

在Configure方法中將CORS中間件添加到管道中

//JS-Add the CORS middleware to the pipeline in Configure:app.UseCors("default");

(3)添加測(cè)試用的api接口

添加IdentityController控制器

(4)測(cè)試

運(yùn)行AuthServer項(xiàng)目,運(yùn)行ResourceAPI項(xiàng)目。

在VSCode終端輸入:npm start

打開瀏覽器:http://localhost:5003/

點(diǎn)擊Login,使用賬號(hào):zhubingjian 密碼:123? 登錄

登錄返回用戶的Claims信息

點(diǎn)擊Call API,調(diào)用資源服務(wù)器的API接口

成功獲取接口返回的信息。


通過這六節(jié)的內(nèi)容,大概地介紹了IdentityServer4中Client的應(yīng)用場(chǎng)景,包括MVC、前后端分離和服務(wù)端。

此外還介紹了如何動(dòng)態(tài)配置Client、如何驗(yàn)證從數(shù)據(jù)庫(kù)中獲取的User以及自定義Claims的方法。

這個(gè)系列對(duì)IdentityServer4的介紹也是我博客的起點(diǎn),寫博客雖然很花時(shí)間,但是可以幫助我加深對(duì)知識(shí)點(diǎn)的理解。然而文中也體現(xiàn)到我對(duì)某些知識(shí)點(diǎn)的理解還是不到位的,望大家見諒。

參考官網(wǎng)地址:https://identityserver4.readthedocs.io/en/release/quickstarts/7_javascript_client.html

授權(quán)服務(wù)和資源服務(wù)源碼地址:https://github.com/Bingjian-Zhu/Mvc-HybridFlow.git

JavaScript客戶端源碼地址:https://github.com/Bingjian-Zhu/Identity-JavaScript_Client.git

相關(guān)文章:

  • 從Client應(yīng)用場(chǎng)景介紹IdentityServer4(一)

  • IdentityServer4-EF動(dòng)態(tài)配置Client和對(duì)Claims授權(quán)(二)

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

  • IdentityServer4-MVC+Hybrid實(shí)現(xiàn)Claims授權(quán)驗(yàn)證(四)

  • IdentityServer4-從數(shù)據(jù)庫(kù)獲取User登錄并對(duì)Claims授權(quán)驗(yàn)證(五)

  • 基于IdentityServer4 實(shí)現(xiàn).NET Core的認(rèn)證授權(quán)

  • IdentityServer4與ocelot實(shí)現(xiàn)認(rèn)證與客戶端統(tǒng)一入口

  • 使用Dapper持久化IdentityServer4

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

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com


總結(jié)

以上是生活随笔為你收集整理的IdentityServer4-前后端分离的授权验证(六)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。