發表文章

目前顯示的是 8月, 2020的文章

.Net Core Identity 無法登入

圖片
前言   前陣子使用Blazor Assembly寫的一個Side Project給家人使用,這兩天反應無法登入,一直跳回Login。在反應的當下,我測試都正常,直到今天早上要登入時,出現了同樣的問題。 http status回應200,沒有任何錯誤訊息。 執行版本 .Net Core 3.1 Blazor Assembly 3.2.0 Microsoft.AspNetCore.Identity 3.1.7 原因 檢查console及Response Header,有警告訊息"Identity.External samesite=none; httponly...",判斷應該chrome 85針對SameStie更嚴格的限制造成的。 圖片來源  Ps:忘了擷圖XD,引用一張相似的。 關於SameStie SameStie是防止第三方Cookie的存取。 Strict : 嚴格限制。 Lax  : 只有Get 可以存取,Post不行。 本來預設是None ,Chrome在80之前會通知你要修改為Lax。 80之後,Lax為Chrome的預設值。意思是你不設定的話,預設為Lax。 ps:目前的 程式不用更動 。 .net 4.7.2 及 4.8後,Session,Cookie ,Form Auth Cookie 已預設為Lax None : 在https下,Secure設為true,第三方才可以存取。 解決方式 將Identity相關Cookie由原于的none設置成Lax。 1.設定Lax    services.ConfigureExternalCookie(options =>             {                 options.Cookie.SameSite =  Microsoft.AspNetCore.Http.SameSiteMode.Lax;             });             services.Configure<CookiePolicyOptions>(options =>             {                 options.MinimumSameSitePolicy = SameSiteMode.Lax;                 

Facebook 取得粉絲頁資訊整理

圖片
前言    工作需求,需要取得自家粉絲頁的影片資訊。這幾天的搜尋及研究後,頭腦有點亂,整理一下相關內容及連結。 Token 區分 User Access Token:最常用的一種,讀寫用戶的Facebook資料,透過 login dialog經過用戶授權取得 App Access Token : 用來更改你的app設定或是發佈一些消息,透過server對facebook呼叫取得 Page Access Token : 跟User access token很像,但是它可以讀 寫 Facebook page的資料 Client Token:封裝在mobile apps或是桌面程式 參考: https://ithelp.ithome.com.tw/articles/10158130 取得 粉絲頁 影片資訊 取得粉絲頁的影片清單 需要Page Id,管理者在粉絲頁管理的"關於"可以取得。 需要權限:pages_read_engagement 內嵌影片播放器 API 事件控制 影片與直播是不同的API Token 取得-使用工具 透過工具取得短期Token 個人、Page都可以 透過 Debuger可以換成三個月的Long Token 90天過期,若有使用則會繼續展延,若沒使用60天就會過期。 過期的token不可再拿來換新的。 可以透過API取得short-token,再去換long-token。 未過期的也可以使用long-token,換另一個long-token回來。 Token 取得-使用API 透過Fb API Client 取得短期Token 更換成長期Token及Page Token 需要App Id及App Secret 我的作法是換成長期Token後,再把它換成Page Token。ps:期限是永久的....不知什麼時時會失效。 pages_read_engagement:取得影片的權限 在 Developer Mode下,可以直接使用 在Live Mode下,需要App Review相關權限。 申請權限,需要附上你的應用程式的操作畫面及影片 要通過個人或商業審核。 個人審核現在暫停中(已停4個月了) App 啟用Live基本條件 相關參考 透過Fb API Client 取得短期Token 使用App Id,Secret更換成長期Tok

ASP.NET MVC-Google Authenticator雙因素認證實作

圖片
前言 雙因素認證,除了Email及簡訊以外,另一選擇 Google Authenticator。本文針對在ASP.NET MVC實作方式作說明。 實作 1.安裝動態密碼及QRCode套件 2.產生動 態密碼的私鑰及BarcodeUrl       private GoogleAuthenticatorModel GenerateGoogleAuthenticatorModel()         {             byte[] secretByte = KeyGeneration.GenerateRandomKey(20);             string userName = "Kimxinfo";             string barcodeUrl = KeyUrl.GetTotpUrl(secretByte, userName) +  "&issuer=GoogleAuthenticatorLab";             var model = new GoogleAuthenticatorModel             {                 SecretKey = Base32Encoder.Encode(secretByte),                 BarcodeUrl = barcodeUrl             };             return model;         } 3.產生Barcode圖檔   private string GenerateQRCode(GoogleAuthenticatorModel model)         {             string fileUrl = $"~/temp/{model.SecretKey}.jpg";             string filePath = Server.MapPath(fileUrl);             QRCodeGenerator.ECCLevel eccLevel = QRCodeGenerator.ECCLevel.M;             using (QRCodeGenerator qrGenera