通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权-百度版...
目錄:
一、通過Dapr實現一個簡單的基于.net的微服務電商系統
二、通過Dapr實現一個簡單的基于.net的微服務電商系統(二)——通訊框架講解
三、通過Dapr實現一個簡單的基于.net的微服務電商系統(三)——一步一步教你如何擼Dapr
四、通過Dapr實現一個簡單的基于.net的微服務電商系統(四)——一步一步教你如何擼Dapr之訂閱發布
通過Dapr實現一個簡單的基于.net的微服務電商系統(五)——一步一步教你如何擼Dapr之狀態管理
通過Dapr實現一個簡單的基于.net的微服務電商系統(六)——一步一步教你如何擼Dapr之Actor服務
通過Dapr實現一個簡單的基于.net的微服務電商系統(七)——一步一步教你如何擼Dapr之服務限流
通過Dapr實現一個簡單的基于.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤
通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權
在上一篇文章中案例使用了github的oauht2.0授權,實際上使用哪個平臺并不局限,只要平臺實現了oauth2.0標準都可以接入。本節我們聊聊如何集成百度oauth2.0。
本來想集成微信/QQ/微博的,結果發現不是需要企業資質就是要個人認證,就百度開放平臺不需要,就用百度來演示吧。
首先我們需要注冊并登錄百度開發者平臺,同時創建一個應用,獲取它的API Key和Secret Key
進入應用詳情后在點擊左下角的安全設置,配置我們的鑒權域名【http://oauth.dapreshop.com:30882】到授權回調頁并禁用Implicit Grant授權方式,其他不用填如下圖:
?
?
接著修改我們的component文件,錄入剛才我們獲取的API Key和Secret Key到clientid和clientsecret一欄,并修改scopes、authURL、redirectURL如下所示,修改完畢后記得重新apply一下
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
? name: baiduauth
? namespace: dapreshop
spec:
? type: middleware.http.oauth2
? version: v1
? metadata:
? - name: clientId
? ? value: ""
? - name: clientSecret
? ? value: ""
? - name: scopes
? ? value: "basic"
? - name: authURL
? ? value: "http://openapi.baidu.com/oauth/2.0/authorize"
? - name: tokenURL
? ? value: "https://openapi.baidu.com/oauth/2.0/token"
? - name: redirectURL
? ? value: "http://oauth.dapreshop.com:30882"
? - name: authHeaderName
? ? value: "myauth"
4、修改一下獲取用戶信息的代碼(這里是演示所以百度返回的openid我取前n位做登錄名):
var model = new Model() { login = "" };
? ? ? ? ? ? if (HttpContextExt.Current.Headers.Any(x => x.Key.ToLower().Equals("myauth")))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var requestUri = new Uri($"https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser?access_token={HttpContextExt.Current.Headers.FirstOrDefault(x => x.Key.ToLower().Equals("myauth")).Value.Replace("Bearer ", "")}");
? ? ? ? ? ? ? ? var result = await httpClientFactory.CreateClient().GetAsync(requestUri);
? ? ? ? ? ? ? ? if (result.IsSuccessStatusCode)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? var content = await result.Content.ReadAsStringAsync();
? ? ? ? ? ? ? ? ? ? baidumodel obj = JsonSerializer.Deserialize<baidumodel>(content);
? ? ? ? ? ? ? ? ? ? HttpContextExt.Current.Response.Cookies.Append("githubuser", JsonSerializer.Serialize(new Model() { login = obj.openid.Substring(0,8), name = obj.uname, avatar_url = $"http://tb.himg.baidu.com/sys/portraitn/item/{obj.portrait}" }),
? ? ? ? ? ? ? ? ? ? ? ? new Microsoft.AspNetCore.Http.CookieOptions() { Domain = "dapreshop.com" });
? ? ? ? ? ? ? ? ? ? HttpContextExt.Current.Response.Redirect("http://admin.dapreshop.com:30882");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return model;
重新啟動整個demo,這時候再次點擊圖標,我們會跳轉至百度的授權頁
回跳后重新初始化就能看到我們取到了百度授權的用戶信息
相關文章:
Dapr能否引領云原生中間件的未來?
云原生 | 阿里巴巴的Dapr實踐與探索
Dapr | 云原生的抽象與實現
Dapr 可視化指南
Dapr 知多少 | 分布式應用運行時
Dapr 正式發布 1.0
Dapr 交通流量控制示例
Dapr是如何簡化微服務的開發和部署
微軟開源微服務運行時Dapr,賦能云原生應用開發
YARP實現Dapr服務調用的反向代理
Dapr微服務應用開發系列0:概述
Dapr微服務應用開發系列1:環境配置
Dapr微服務應用開發系列2:Hello World與SDK初接觸
Dapr微服務應用開發系列3:服務調用構件塊
Dapr微服務應用開發系列4:狀態管理構件塊
Dapr微服務應用開發系列5:發布訂閱構建塊
Windows環境下Dapr入門
云原生 | .NET 5 with Dapr 初體驗
通過Dapr實現一個簡單的基于.net的微服務電商系統
通過Dapr實現一個簡單的基于.net的微服務電商系統(二)——通訊框架講解
通過Dapr實現一個簡單的基于.net的微服務電商系統(三)——一步一步教你如何擼Dapr
通過Dapr實現一個簡單的基于.net的微服務電商系統(四)——一步一步教你如何擼Dapr之訂閱發布
通過Dapr實現一個簡單的基于.net的微服務電商系統(五)——一步一步教你如何擼Dapr之狀態管理
通過Dapr實現一個簡單的基于.net的微服務電商系統(六)——一步一步教你如何擼Dapr之Actor服務
通過Dapr實現一個簡單的基于.net的微服務電商系統(七)——一步一步教你如何擼Dapr之服務限流
通過Dapr實現一個簡單的基于.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤
通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權
WebAssembly + Dapr = 下一代云原生運行時?
dapr 應用開發 | 環境配置
乘風破浪,.Net Core遇見Dapr,為云原生而生的分布式應用運行時
總結
以上是生活随笔為你收集整理的通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权-百度版...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET之Docker部署详细流程
- 下一篇: java信息管理系统总结_java实现科