การเชื่อม OAUTH2 ของ PSU ด้วย NEXT.JS (PAGE ROUTE)

file : pages/challback.js const inter = Inter({ subsets: [“latin”] }); export default function Home({show2}) {      return (        <>            <div className=”container”>                <h1>Check OAuth</h1>                <p>Code: {JSON.stringify(show2)}</p>            </div>        </>    );} export async function getServerSideProps(context) {// เมื่อทำการ SignOn ระบบจะทำการเรียก callback url โดยส่ง parameter code มา    const { query } = context;    const code = query.code; //เตรียมข้อมูลเพื่อรับ access token    const pData1 = {        grant_type: ‘authorization_code’,        client_id: ‘XXXXXXXX’, // ได้มาจากสำนักนวัตถกรรม        client_secret: ‘XXXXXXXX’, // ได้มาจากสำนักนวัตถกรรม        code: code,        response_type: ‘code’,        redirect_uri: ‘CALL BACK URL’    }; //ส่งคำร้องเพื่อขอ access token//เมื่อส่งคำร้องขอ access token แล้ว code ที่ได้มาจะหมดอายุทันที    const resP1 = await fetch(‘https://oauth.psu.ac.th/?oauth=token’, {        method: ‘POST’,        body: JSON.stringify(pData1),        headers: {            ‘content-type’: ‘application/json’        },    });     const show1 = await resP1.json(); //เมื่อได้ access token//ส่งคำร้องเพื่อขอ user profile โดยต้องส่ง access token ไปด้วย//ซึ่ง access token จะมีอายุ 1 ชั่วโมง    const resP2 = await fetch(‘https://oauth.psu.ac.th?oauth=me’,{        method: ‘GET’,        headers: {            ‘content-type’: ‘application/json’,            ‘Authorization’: ‘Bearer ‘+show1.access_token        },    });     const show2 = await resP2.json();         return {        props: {show2}    }}

Read More »

การเชื่อม OAUTH2 ของ PSU ด้วย NEXT.JS (APP ROUTE)

file app/api/callback/route.ts async function GET(request: Request) {// เมื่อทำการ SignOn ระบบจะทำการเรียก callback url โดยส่ง parameter code มา    const { searchParams } = new URL(request.url);    const code = searchParams.get(‘code’);    const state = searchParams.get(‘state’); //เตรียมข้อมูลเพื่อรับ access token    const pData1 = {        grant_type: ‘authorization_code’,        client_id: ‘XXXXXXXX’, // ได้มาจากสำนักนวัตถกรรม        client_secret: ‘XXXXXXXX’, // ได้มาจากสำนักนวัตถกรรม        code: code,        response_type: ‘code’,        redirect_uri: ‘CALL BACK URL’    }; //ส่งคำร้องเพื่อขอ access token//เมื่อส่งคำร้องขอ access token แล้ว code ที่ได้มาจะหมดอายุทันที        const resP1 = await fetch(‘https://oauth.psu.ac.th/?oauth=token’,{        method: ‘POST’,        body: JSON.stringify(pData1),        headers: {            ‘content-type’: ‘application/json’        },    })        const show1 = await resP1.json(); //เมื่อได้ access token//ส่งคำร้องเพื่อขอ user profile โดยต้องส่ง access token ไปด้วย//ซึ่ง access token จะมีอายุ 1 ชั่วโมง        const resP2 = await fetch(‘https://oauth.psu.ac.th?oauth=me’,{        method: ‘GET’,        headers: {            ‘content-type’: ‘application/json’,            ‘Authorization’: ‘Bearer ‘+show1.access_token        },    });        const show2 = await resP2.json()     if(show2.user_login){        return Response.redirect(‘https://xxxxxx/sussec)    }else{        return Response.redirect(‘https://xxxxxx/error’)} } export {GET}

Read More »

การตรวจสอบพื้นที่ใน One Drive

1. เข้า web OneDrive https://emailpsuac-my.sharepoint.com2. คลิกที่รูปฟันเฟืองด้านขวา เลือก การตั้งค่า OneDrive 3. เมนูด้านซ้ายคลิก การตั้งค่าเพิ่มเติม ด้านขวาคลิก เมตริกของที่เก็บข้อมูล 4. ระบบจะแสดงการใช้พื้นที่ใน OneDrive

Read More »

การเพิ่มเลขลำดับในตาราง MS WORD

การเพิ่มเลขลำดับในตาราง MS WORD1. คลิกที่ cell แรกของตารางที่จะเพิ่มเลขลำดับ 2. กด ปุ่ม Shift ค้าง แล้วเลือก cell สุดท้ายของตารางที่จะเพิ่มเลขลำดับ 3. คลิกเมนู Home (1) => หัวข้อ (2) => เลือกรูปแบที่ต้องการ (3) 4. ได้ผลดังรูป 5. ทดสอบเพิ่มแถวในตาราง 6.ได้ผลดังรูป 7.ทดสอบลบแถวในตราง 8.ได้ผลดังรูป จะพบว่า ทำการเพิ่มหรือลบแถวในตาราง ตัวเลขลำดับที่ในตารางจะยังคงเรียงได้อย่างถูกต้อง

Read More »

การติดตั้ง SSL บน apache2

สำหรับ APACHE21. สร้าง DH parameters#sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096 2. เปิดใช้ module headers ของ apache2#sudo a2enmod headers 3. แก้ไขแฟ้ม  /etc/apache2/mods-available/ssl.conf ดังนี้SSLProtocol -ALL +TLSv1.2 +TLSv1.3//บาง OS เช่น CENTOS ใช้ SSLProtocol ALL -TLSv1 -TLSv1.1 -SSLv3 -SSLv2SSLOpenSSLConfCmd DHParameters “/etc/ssl/certs/dhparam.pem”SSLHonorCipherOrder onSSLCompression offSSLSessionTickets offSSLOptions +StrictRequire //เปลี่ยนตามที่ตัวเองใช้SSLCertificateKeyFile /etc/apache2/certificate/STAR_oas.psu.ac.th.keySSLCertificateChainFile /etc/apache2/certificate/STAR_oas.psu.ac.th.ca-bundleSSLCertificateFile /etc/apache2/certificate/STAR_oas.psu.ac.th.crt SSLOpenSSLConfCmd ECDHParameters brainpoolP512r1SSLOpenSSLConfCmd Curves brainpoolP512r1:sect571r1:secp521r1:secp384r1SSLCipherSuite TLSv1.3 TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:TLS13_AES_128_GCM_SHA256:TLS13_AES_256_GCM_SHA384:TLS13_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_AES_256_GCM_SHA384:TLS_DHE_RSA_AES_256_GCM_SHA384:TLS_ECDHE_RSA_CHACHA20_POLY1305_SHA256:TLS_DHE_RSA_CHACHA20_POLY1305_SHA256:TLS_DHE_RSA_AES_256_CCM_8:TLS_DHE_RSA_AES_256_CCM:TLS_ECDHE_RSA_ARIA_256_GCM_SHA384:TLS_DHE_RSA_ARIA_256_GCM_SHA384:TLS_ECDHE_RSA_AES_128_GCM_SHA256:TLS_DHE_RSA_AES_128_GCM_SHA256:TLS_DHE_RSA_AES_128_CCM_8:TLS_DHE_RSA_AES_128_CCM:TLS_ECDHE_RSA_ARIA_128_GCM_SHA256:TLS_DHE_RSA_ARIA_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:PSK-CHACHA20-POLY1305:ECDHE-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:RSA-PSK-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:DH-RSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DH-DSS-AES256-GCM-SHA384:ADH-AES256-GCM-SHA384:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDH-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:PSK-AES256-CCM:DHE-PSK-AES256-CCM:PSK-AES256-CCM8:DHE-PSK-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8: ############## – OCSP Stapling, only in httpd 2.3.3 and laterSSLUseStapling onSSLStaplingResponderTimeout 5SSLStaplingReturnResponderErrors offSSLStaplingCache “shmcb:logs/ssl_stapling(32768)”## – HTTP Strict Transport Security Header.Header always set Strict-Transport-Security “max-age=31536000; includeSubDomainsi; preload” สำหรับคนที่ใช้ letsencrypt.org ตอนสร้าง cert ให้เพิ่มคำสั่งนี้ครับ –rsa-key-size 4096#sudo certbot certonly –rsa-key-size 4096 –manual –preferred-challenges dns เสร็จไปทดสอบที่https://www.ssllabs.com/ssltest/ ปล.1 ถ้าใช้ Certificate ที่สำนักนวัตกรรมดิจิทัลและระบบอัจฉริยะ จัดชื้อมา จะได้ RSA key ขนาด 2048 bit ทำให้คะแนน Key Exchange ได้ 90 คะแนน ปล.2 ส่วนของ IIS ค่อยทำครับ เพราะต้องใช้ Windows 2022 ขึ้นไปครับ จึงจะ support TLSv1.3ที่ผมมีเพียง Windows 2019 จึงได้ คะแนน ส่วนของ Cipher Strength ได้แค่ 90 ปล.3 ถ้าท่านตามนี้จะทำให้ browser version เก่าเข้าใช้งาน web ท่านไม่ได้เพราะได้ตัด Cipher ที่เป็นจุดอ่อนของระบบออกไป ซึ่ง browser เหล่านนั้นล่วนแต่ใช้ Cipher ที่ถุกตัดออก ปล.4 สำหรับ Windows ใช้คำสั่งนี้สร้าง cert สำหรับ IIS ครับ #sudo openssl pkcs12 -export -out oas.psu.ac.th.pfx -inkey oas.psu.ac.th.key -certfile intermediate_oas.psu.ac.th_ca.crt -in oas.psu.ac.th.crt ปล.5 เพิ่ม SSLCipherSuite ตาม https://www.tenable.com/plugins/nessus/156899 (2560/11/03)

Read More »