發表文章

目前顯示的是 2024的文章

[開發環境紀錄] 使用 NCNN + OpenCV 建置 WebAssembly

圖片
在  上一篇  文章中分享了透過別人建置好的 WebAssembly 來進行真假人臉辨識,想說趁此機會順便了解一下 WebAssembly 的開發方式。 由於我是使用 Mac 在訓練深度學習的模型,因此也順理成章的使用 Mac 來進行開發環境的設置,但........... 真沒想到過程異常艱辛,解了一個問題又多出另外一個新的問題,於是只好狠下心來改用 Ubuntu 重頭來過,也因此有了這篇血淚記錄文(執行結果如下圖)。 另外因為牽扯技術過多,本文將不會深入探討各項技術的原理,僅記錄環境的設定過程,對於相關技術有興趣的人,可參閱文末參考網站的連結。 在開始詳細說明之前,先列出最終完成時的開發環境版本: Ubuntu : 24.04 ,作業系統。 Python : 3.12.3,使用 OS 內建版本。 Cmake : 3.28.3,C++ 編譯器。 Emscripten : 3.1.64,用來將 C++ 程式編譯成 WebAssembly 用。 OpenCV: 4.10.0,影像處理套件。

使用 JavaScript 在瀏覽器中進行真人臉部辨識 (基於 face-api.js)

圖片
前言 人臉辨識技術已經是一個非常成熟的技術了,但在過去主要都還是在桌面程式上運行,這幾年隨著硬體性能的飛躍進步和人工智慧框架的日益成熟,如今我們現在已經能夠在瀏覽器中實現許多過去難以完成的功能。 今天這篇文章,我想和大家分享如何在瀏覽器中實現真人臉部辨識,在開始之前,請先了解人臉辨識的基本流程(如下圖所示),主要分為三個部分:取得人臉特徵、活體偵測、以及比對活體特徵。 請注意,網路上很多臉部辨識範例大都沒有提到活體偵測的部分,但這個部分卻是實務運用上很重要的一個環節,因為過去曾經有小學生利用列印的照片進行身份欺騙的例子發生。 另外針對活體偵測,目前業界已經提出了多種方案,例如使用 3D 攝影機或紅外線設備等來輔助判斷,不過本文的目標是在瀏覽器中實現真人臉部辨識,因此我採用其他方法來達成這個目標,後面會再補充說明,底下的影片是最終的實做成果,如果遇到非真人的圖片會顯示無法辨識,若是真人則會進行身分判斷。

使用 NET Core 建置 SAML2 SSO 站台 - 整合應用程式(SP)

了解了的 SAML 的基本概念 和 完成了 Okta 身分驗證服務商設定 ,本文將記錄如何將 SAML 2.0 登入功能整合到您的 Web 應用程式中,常見的 Web 網站分為傳統的 WebForm(即每次點擊會刷新整個頁面)和 SPA(單頁應用程式)搭配 API 的方式。 因為 SPA 牽涉到的範圍比較複雜,後續有機會我會在這篇文章中補充相關內容,在這篇文章中,我將使用 .NET Core 8 MVC 框架 ,並使用 ITfoxtec.Identity.Saml2、ITfoxtec.Identity.Saml2.MvcCore 這兩個套件來為來為網站加上 SAML 2.0 的功能。

使用 NET Core 建置 SAML2 SSO 站台 - Okta 身分驗證服務商(IdP)設定

圖片
在 上一篇 文章中,你應該已經了解了 SAML 是什麼以及其運作原理,在這篇文章中,我將記錄如何申請並設定身分驗證提供商 Okta,但請記得先準備好你的應用程式憑證檔案,通常為 .crt 附檔名結尾,若還不知道那是什麼,請先回到上一篇文章複習一下,如果已經準備好了,就讓我們直接開始吧。 註冊 Okta 開發者帳號 若您還沒有開發者帳號,請先到 Okta 註冊一個開發者帳號。 請注意 Okta 有區分成 Workforce Identity Cloud(公司員工用)和 Customer Identity Cloud(外部客戶)兩個不同的平台,我們這次的範例是要模擬整合內部系統用,因此請選擇註冊 Workforce Identity Cloud。

使用 NET Core 建置 SAML2 SSO 站台 - 基本概念篇

圖片
前言 上一篇文章 幫自己的 NET.Core 站台加上 TOTP 雙因子驗證吧 ,有提到如何幫自己的網站加上 MFA 驗證,但說到身分認證系統服務,就不得不提一下 SAML。 SAML 維基百科的定義 安全主張標記式語言(英語:Security Assertion Markup Language,簡稱 SAML)是一個基於 XML 的開源標準資料格式,它在當事方之間交換身分驗證和授權資料,尤其是在身分提供者和服務提供者之間交換。SAML 是 OASIS 安全服務技術委員會的一個產品,始於2001年。其最近的主要更新發布於2005 年,但協定的增強仍在通過附加的可選標準穩步增加。

幫自己的 NET.Core 站台加上 TOTP 雙因子驗證吧

圖片
前言 最近公司正在規劃明年要幫資訊系統全面導入 MFA,為此 Infra 部門如火如荼的進行了一連串的可行性評估,並找了一些在做身分認證系統服務的 SaaS 服務廠商來展示系統功能,這才讓我想起之前一直想要幫自己的後台加上手機 OTP 驗證的功能,這篇文章我要記錄一下實作過程的筆記,但在開始之前得先大概了解一下何謂 2FA、MFA、OTP,以及它們之間的關係。

在 Apple iMac 上安裝 Tensorflow (使用虛擬環境)

圖片
在上一篇 在 Windows & Mac 環境上安裝 Jupyter Lab  中有提到,因為要執行深度學習模型的訓練,所以拿了閒置的 Mac 電腦安裝了 Jupyter Lab 的環境,在這篇文章中,要記錄如何在 Mac 上安裝 Tensorflow 的執行步驟。 執行環境說明 OS : macOS 12.4  CPU : Apple M1 Python 3.11.7 安裝 Tensorflow 為了怕干擾現有執行環境,這邊是在虛擬環境中安裝 Tensorflow,若不需使用虛擬環境底下前兩個步驟可以不執行,相關步驟如下說明。 創建虛擬環境(tfenv 這個名稱可自行調整)。 python3 -m venv ~/Developer/tfenv 切換到虛擬環境。 source ~/Developer/tfenv/bin/activate

在 Windows & Mac 環境上安裝 Jupyter Lab

圖片
前言 最近開始在做碩專論文第二階段的實驗,過去因為第一階段的實驗範圍是機器學習相關的演算法,所以 Google colab 就足以應付了,但第二階段開始要進行深度學習的演算法,發現 Colab 已經沒辦法滿足我的需求了,因此不得已只能在本地端的環境上架設 Jupyter Lab 來當作實驗環境了。 一開始我先在 Windows 環境上安裝,但因為該環境上沒有顯示卡,所以跑起來頗為吃力,幸好我手邊有一台閒置的 iMac(M1晶片),所以改用 Mac 來進行安裝,目前看來,搭配 iMac 的效能確實比僅擁有 CPU 的 Windows 環境好很多,因此,本文將記錄我在這兩個平台上的設定過程和相關步驟。 對了,在囉嗦一句,因為未來可能會有不同套件版本的需求,所以實務上建議將 Jupyter Lab 安裝在虛擬環境上面,至於如何安裝在虛擬環境?這個後續我會在另外一篇在分享了。

[ESP32 系列] 初探 ESP32

圖片
前言 睽違了三四年沒有碰  Micro:bit 開發版 , 直到去年九月回到學校進修才又開始翻箱倒櫃的找出這個小玩意來玩玩,上學期的課程使用的是 專攻邊緣運算的 Jetson Nano,但有了之前買了一堆感應器,最後因為沒時間可以玩,又放著變成電子垃圾的教訓,因此上學期收起我衝動的心,就只有使用實驗室的設備玩玩而已(其實是怕被老婆唸 XD)。 這學期我修了一門資安課,內容相當豐富,不僅探討了網路、資訊安全,還涉及到了密碼學等多個領域,課程的重點放在研究 IoT 設備在資料傳輸上的安全問題,更酷的是,我們還使用 IoT 設備來進行了 RSA 加密的實驗。 老師非常慷慨地給了我們每人一套 ESP32 + OLED + 溫溼度感測器,讓我們可以實際動手操作,通過 RSA 加密來保護這些 IoT 設備在雲端傳輸資料的安全性,雖然課後老師沒有要求我們撰寫實驗報告,但我覺得這些實驗實在太有趣了,而且都花了時間了,怕自己過段時間就會忘記,所以我特在這個網誌把所有的實驗的重要步驟都記錄下來,方便自己以後查詢。

別因不安全的密碼讓你的資料裸奔了,了解一下如何為網站加上 WebAuthn 無密碼驗證吧

圖片
前言 你有沒有曾經使用 Google 瀏覽器登入某個網站時,突然跳出「你的密碼已遭洩露」的訊息? 除非你用的密碼堅不可摧、每個網站都設定不同,否則你多多少少應該都會遇到這種情況吧。 如果你的回答是 No,我的密碼很安全,怎麼可能發生在我身上的話,你也別高興得太早,國外有位工程師寫了一個網站叫做 Have I been pwned ,收集了過去數年來洩露的數十億筆密碼資料 (我強烈懷疑這工程師自己也是暗網的潛在賣家,不然誰身上可以蒐集到這麼多資料呢 XD),只要你輸入常用的帳號,這網站就會告訴你是否有洩漏的風險,如下圖,我自己電子郵件信箱也無法倖免。 好啦,言歸正傳。近年來,資安意識興起,各大網站都開始提倡 MFA (多重要素驗證),就連我國內政部的系統也開始全面無密碼化,改用自然人憑證來進行登入,但對於個人開發的小網站,要求使用者安裝額外設備或 APP 來實現多因素認證,未免太不切實際。 如果有一種機制,可以直接利用大家都有的手機來進行驗證,是不是就更完美了呢?WebAuthn 就是為了這個目的所存在的。

使用 NET.Core 進行 LDAP 物件屬性驗證

圖片
情境說明 從我開始寫程式以來,LDAP 這項技術就一直存在,但對於缺乏 Infrastructure 背景的我來說,過往的知識都僅侷限在使用程式進行 Active Directory(AD)驗證,如 DN、CN、OU、DC 等相關術語,老實說我從未真正深入了解過(有點心虛)。 最近開發一個小需求,需要驗證使用者輸入的郵件是否存在的功能,在開發過程中出現了一個奇怪的現象:只要透過程式登入,外部網路就會斷線。經過 Infra 部門的查詢,他們發現防火牆(PA)的設定導致了這個問題。公司的政策限制了部分帳號的對外網路存取權限,但這次的問題是,程式綁定了一組可以查詢 AD 資料的帳號後,防火牆政策誤判我的開發機使用的是那一組沒有對外網路存取權限的帳號,因而封鎖了對外網路的存取權限。 這對開發人員來說,造成了一些困擾,因為每次都需要關閉所有開發工具,並登出重新登入,因此也趁此次機會,我決定在虛擬機(VM)上認真地建立一個AD,以滿足我的開發需求,同時也趁這個機會深入了解 LDAP 的運作原理。

解決在 MacOS 的環境下無法將程式碼 push 到 Azure DevOps Git 的問題

圖片
因為工作的關係,需要在不同作業系統下進行開發,為了統一管理程式碼,我採用了 Azure DevOps Git 私有庫作為版控工具。在 Windows 環境下,推送程式碼只需輸入帳號密碼即可成功進行,但在 MacOS 環境下,推送程式碼至存儲庫時卻會遇到 "fatal: Authentication failed" 的錯誤訊息。 lawrence@iMac TestRepo % git push origin master Username for 'https://mydevgit.visualstudio.com': <我的登入帳號> Password for 'https://<我的登入帳號>@mydevgit.visualstudio.com': <我的登入密碼> fatal: Authentication failed for 'https://mydevgit.visualstudio.com/Default/PE/_git/TestRepo/' 這個問題已經發生了多次,每次發生時都需要重新上網查找解決方案,為了方便日後查閱,我將解決方法做了筆記,方便後續自己查看。

[工具] 批次產生 QR Code 電子名片

圖片
QRCode 電子名片是什麼?  QRCode 電子名片是一種方便快捷的方式,讓您可以將您的聯絡方式以 QRCode 的形式分享給他人。這個 QRCode 可以包含您的姓名、職稱、公司名稱、電話號碼、電子郵件地址等聯絡資訊。當他人掃描這個QR碼時,這些資訊就會自動地添加到他們的手機聯絡人中,而無需手動輸入。 它的技術術語稱為 "MeCard" 二維條碼,是一種標準的電子名片格式,不知道這是什麼的人請自行 Google 一下,它可以包含各種聯絡資訊。通常,這個格式可以被大多數智能手機和電子郵件客戶端所識別和使用。 目前訪間已經有許多現有的 Web 服務,上傳人員的名片資料後會產生類似下圖的電子名片,但大多數是要註冊會員,大量使用甚至需要收費,而且可能會把員工的個資留在這些 SaaS 廠商的平台上。