คำถามติดแท็ก authentication

การพิสูจน์ตัวตนเป็นการกระทำของเอนทิตีหนึ่งที่พิสูจน์ตัวตนกับอีกเอนทิตี ตัวอย่างทั่วไปเกี่ยวข้องกับการเข้ารหัสคีย์สาธารณะ ตัวอย่างเช่นการพิสูจน์ว่าเว็บไซต์ธนาคารเป็นของธนาคารที่คุณคิดว่าเป็นจริง

7
URL ส่วนบุคคลที่ไม่สามารถคาดเดาได้นั้นเทียบเท่ากับการตรวจสอบด้วยรหัสผ่านหรือไม่
ฉันต้องการที่จะเปิดเผยทรัพยากรบนเว็บ ฉันต้องการปกป้องทรัพยากรนี้: เพื่อให้แน่ใจว่าบุคคลบางคนสามารถเข้าถึงได้เท่านั้น ฉันสามารถตั้งค่าการรับรองความถูกต้องด้วยรหัสผ่านบางประเภท ตัวอย่างเช่นฉันสามารถอนุญาตการเข้าถึงทรัพยากรผ่านเว็บเซิร์ฟเวอร์ที่ตรวจสอบคำขอขาเข้าสำหรับข้อมูลรับรองที่ถูกต้อง (อาจเทียบกับฐานข้อมูลสำรองบางส่วนของผู้ใช้) ก่อนแสดงไฟล์ อีกวิธีหนึ่งคือฉันเพียงแค่สามารถใช้URL ส่วนตัว นั่นคือฉันสามารถโฮสต์ทรัพยากรในเส้นทางที่คาดเดาไม่ได้บางตัวอย่างเช่นhttps://example.com/23idcojj20ijf...ซึ่ง จำกัด การเข้าถึงผู้ที่รู้จักสตริงที่แน่นอน จากมุมมองของผู้ชั่วร้ายที่ต้องการเข้าถึงทรัพยากรนี้วิธีการเหล่านี้เทียบเท่าหรือไม่ ถ้าไม่สิ่งที่ทำให้พวกเขาแตกต่างกันอย่างไร และเท่าที่การบำรุงรักษามีข้อดีข้อเสียของวิธีการอย่างใดอย่างหนึ่งที่ฉันควรทราบก่อนดำเนินการอย่างใดอย่างหนึ่งหรือไม่?

8
เบราว์เซอร์พิมพ์ลายนิ้วมือเป็นเทคนิคที่ใช้การได้เพื่อระบุผู้ใช้ที่ไม่ระบุตัวตนหรือไม่?
เบราว์เซอร์พิมพ์ลายนิ้วมือเป็นวิธีที่เพียงพอสำหรับการระบุผู้ใช้ที่ไม่ระบุชื่อหรือไม่? ถ้าคุณรวมข้อมูลไบโอเมตริกซ์เช่นท่าทางเมาส์หรือรูปแบบการพิมพ์ วันอื่น ๆ ผมวิ่งเข้าไปในการทดลองเอฟเอฟ Panopticlick กำลังทำงานบนเบราว์เซอร์ลายนิ้วมือ แน่นอนฉันคิดทันทีถึงผลสะท้อนความเป็นส่วนตัวและวิธีที่มันสามารถใช้เพื่อความชั่วร้ายได้ แต่ในทางกลับกันสิ่งนี้สามารถใช้เพื่อประโยชน์ที่ดีและอย่างน้อยก็เป็นปัญหาที่น่าดึงดูดในการทำงาน ในขณะที่ทำการค้นคว้าหัวข้อที่ฉันพบบาง บริษัท ใช้เบราว์เซอร์ลายนิ้วมือเพื่อโจมตีการฉ้อโกง และหลังจากส่งอีเมลไปสองสามฉบับฉันสามารถยืนยันได้ว่าเว็บไซต์หาคู่ใหญ่อย่างน้อยหนึ่งแห่งกำลังใช้การพิมพ์ลายนิ้วมือของเบราว์เซอร์ซึ่งเป็นกลไกหนึ่งในการตรวจสอบบัญชีปลอม (หมายเหตุ: พวกเขาพบว่ามันไม่ซ้ำกันมากพอที่จะทำตัวเป็นตัวตนเมื่อปรับขนาดผู้ใช้หลายล้านคน แต่สมองโปรแกรมเมอร์ของฉันไม่ต้องการเชื่อพวกเขา) นี่คือ บริษัท หนึ่งแห่งที่ใช้ลายนิ้วมือเบราว์เซอร์สำหรับตรวจจับและป้องกันการฉ้อโกง: http://www.bluecava.com/ นี่คือรายการสิ่งที่ครอบคลุมที่คุณสามารถใช้เป็นตัวระบุเฉพาะในเบราว์เซอร์ได้: http://browserspy.dk/

3
JSON Web Token - ทำไมส่วนของข้อมูลสาธารณะจึงเป็นเช่นนั้น?
ฉันไม่เข้าใจเหตุผลที่ทำให้การเรียกร้อง / น้ำหนักบรรทุกของ JWT เปิดเผยต่อสาธารณชนหลังจาก base64 ถอดรหัส ทำไม? ดูเหมือนว่ามันจะมีประโยชน์มากกว่าที่จะเข้ารหัสด้วยความลับ บางคนสามารถอธิบายได้ว่าทำไมหรือในสถานการณ์ใดการทำให้ข้อมูลนี้เป็นประโยชน์ต่อสาธารณะ

2
การใช้คุกกี้เทียบกับเซสชันเทียบกับการตรวจสอบตาม Token และการตรวจสอบสิทธิ์
ฉันได้อ่านเกี่ยวกับการรับรองความถูกต้องและทำให้เกิดความสับสนเกี่ยวกับการจำแนกประเภท เริ่มจากการพิสูจน์ตัวตนแบบใช้คุกกี้ถ้าฉันเข้าใจถูกต้องประเด็นสำคัญคือข้อมูลทั้งหมดที่จำเป็นสำหรับการตรวจสอบผู้ใช้จะถูกเก็บไว้ในคุกกี้ และนี่เป็นความสับสนครั้งแรกของฉัน: ในคุกกี้เราอาจเก็บไว้ session id และมันจะกลายเป็นการรับรองความถูกต้องตามเซสชั่น? การอ้างสิทธิ์และควรเรียกว่าเป็นการรับรองความถูกต้องโดยอิงตามการเรียกร้องหรือไม่ ฉันได้พบว่าบางคนถึงกับเก็บโทเค็น JWT ไว้ในคุกกี้ แต่ดูเหมือนว่าจะมีการปรับใช้การตรวจสอบสิทธิ์เอง ... ตอนนี้เรามาเปลี่ยนมาใช้การรับรองความถูกต้องตามการอ้างสิทธิ์ องค์ประกอบหลักคือการเรียกร้องและการรวบรวมการเรียกร้องสามารถใช้เป็นที่เก็บ คุกกี้ (ตามที่กล่าวไว้ข้างต้น) โทเค็น (JWT เป็นตัวอย่าง) จากอีกด้านหนึ่งเมื่อเราพูดถึงโทเค็นมันอาจมีข้อมูลใด ๆ ... รหัสเซสชันเช่น ... แล้วฉันจะพลาดอะไรไป? ทำไมคนไม่กำหนดสิ่งที่ชอบCookie-Session-basedหรือToken-Claims-basedรับรองความถูกต้องเมื่อพูดคุยเกี่ยวกับประเภทการรับรองความถูกต้อง?

4
ฉันจะออกแบบเว็บเซอร์ RESTful ให้ใช้บุคคลที่สาม (เช่น Google, Facebook, Twitter) สำหรับการตรวจสอบได้อย่างไร
สำหรับงานของฉันเรามี webservice สงบดีที่เราสร้างขึ้นที่เราใช้ในการขับเคลื่อนเว็บไซต์สองสามที่เรามี โดยทั่วไปเว็บเซอร์วิซให้คุณสร้างและทำงานกับตั๋วสนับสนุนและเว็บไซต์รับผิดชอบส่วนหน้า การร้องขอบริการเว็บเซอร์ใด ๆ ใช้ส่วนหัวรับรองความถูกต้องซึ่งเราใช้ในการตรวจสอบผู้ใช้และรหัสผ่านสำหรับการโทรแต่ละครั้ง ในปีนี้เราต้องการขยายตัวเลือกการเข้าสู่ระบบของเราเพื่อให้ผู้ใช้บนเว็บไซต์สามารถเข้าสู่ระบบผ่านทาง Google, Twitter และ Facebook อย่างไรก็ตามฉันมีปัญหามากมายในการหาวิธีการออกแบบสิ่งนี้ดังนั้นเว็บเซอร์วิซจึงสามารถใช้ผู้ให้บริการการพิสูจน์ตัวตนบุคคลที่สามเพื่อให้แน่ใจว่าผู้ใช้เป็นคนที่พวกเขาพูด มีวิธีปฏิบัติที่ดีที่สุดในการทำเช่นนี้หรือไม่? ขณะนี้เรากำลังคิดที่จะให้เว็บไซต์จัดการกับการรับรองความถูกต้องของผู้ใช้แล้วใช้การเรียก setSessionId ใหม่ที่ลงทะเบียนเซสชันปัจจุบันด้วยเว็บเซอร์แบ็กเอนด์ คำขอเพิ่มเติมแต่ละรายการไปยังเว็บเซอร์วิซจะส่งผ่าน sessionId นั้นและจะตรวจสอบความถูกต้อง สิ่งเหล่านี้ดูเหมือนจะโอเค แต่ฉันมีความรู้สึกที่ด้านหลังของหัวของฉันที่ฉันไม่ได้คิดเรื่องนี้ผ่านและทุกการเรียกดูฟอรั่มของฉันและการอ่านรายละเอียด Oauth และ openid เป็นเพียงทำให้ฉันสับสนมากขึ้น เคล็ดลับใด ๆ สำหรับวิธีแก้ไขปัญหานี้

2
แชร์คีย์ SSH ส่วนตัวด้วย Bash บน Windows
ฉันติดตั้ง Windows 10 พร้อม Git แล้ว Git นี้ใช้C:/Users/MyNamedir ของฉันเป็นไดเรกทอรี HOME และ/.ssh/dir ภายในเหมาะสมสำหรับการจัดหาคีย์ SSH ส่วนตัวของฉัน ฉันเพิ่งเปิดใช้งานและตั้งค่า "Bash บน Ubuntu บน Windows" (เป็นคำที่ถูกต้อง!) และติดตั้ง Git ในนั้นด้วย ฉันต้องการให้ทั้ง Gits ใช้ชุดคีย์เดียวกันซึ่งไม่สำคัญว่าจะใช้สภาพแวดล้อมแบบใดในเครื่องนี้การกระทำของฉันจะมาจากฉันเสมอ เป็นปัญหาว่าผบหน้าแรกในทุบตีที่แตกต่างกัน ( /home/MyName) ../../mnt/c/Users/MyName/.sshและดังนั้นจึงไม่เห็นกุญแจที่ตั้งอยู่ในที่ห่างไกลในขณะนี้ ฉันคิดว่าฉันจะเป็นผู้ชนะด้วยการเปลี่ยนตัวแปรสภาพแวดล้อม HOME โดยใช้ export HOME=/c/mnt/Users/MyName สิ่งนี้ได้เปลี่ยน HOME dir สำเร็จ แต่ bash git ยังไม่เห็นคีย์ที่อยู่ใน./.sshdir ฉันไม่แน่ใจว่านี่คือ A) หรือไม่เพราะ bash git ต้องการคีย์ในรูปแบบไฟล์อื่น? …

2
ฉันควรจัดเก็บการอ้างสิทธิ์ผู้ใช้ของฉันในโทเค็น JWT หรือไม่
ฉันใช้โทเค็น JWT ในส่วนหัว HTTP เพื่อตรวจสอบสิทธิ์คำขอไปยังเซิร์ฟเวอร์ทรัพยากร เซิร์ฟเวอร์ทรัพยากรและเซิร์ฟเวอร์รับรองความถูกต้องมีบทบาทผู้ปฏิบัติงานแยกกันสองบทบาทบน Azure ฉันไม่สามารถตัดสินใจได้ว่าควรจัดเก็บการเคลมในโทเค็นหรือแนบไปกับคำขอ / ตอบกลับด้วยวิธีอื่น รายการการอ้างสิทธิ์ส่งผลกระทบต่อการแสดงผลองค์ประกอบ UI ฝั่งไคลเอ็นต์รวมถึงการเข้าถึงข้อมูลบนเซิร์ฟเวอร์ ด้วยเหตุนี้ฉันต้องการตรวจสอบให้แน่ใจว่าการเรียกร้องที่ได้รับจากเซิร์ฟเวอร์นั้นเป็นของแท้และผ่านการตรวจสอบก่อนที่จะดำเนินการตามคำขอ ตัวอย่างของการอ้างสิทธิ์คือ: CanEditProductList, CanEditShopDescription, CanReadUserDetails เหตุผลที่ฉันต้องการใช้โทเค็น JWT สำหรับพวกเขาคือ: การป้องกันที่ดีขึ้นต่อการแก้ไขการเคลมสินค้าด้านลูกค้า ไม่จำเป็นต้องค้นหาการอ้างสิทธิ์ในทุกคำขอ เหตุผลที่ฉันไม่ต้องการใช้โทเค็น JWT: เซิร์ฟเวอร์รับรองความถูกต้องจะต้องทราบรายการการเรียกร้องเป็นศูนย์กลางของแอพ โทเค็นกลายเป็นจุดเดียวของการแฮ็ค ฉันได้อ่านบางสิ่งที่บอกว่าโทเค็น JWT ไม่ได้มีไว้สำหรับข้อมูลระดับแอป สำหรับฉันแล้วดูเหมือนว่าทั้งคู่มีข้อเสีย แต่ฉันโน้มตัวไปยังการรวมการอ้างสิทธิ์เหล่านี้ลงในโทเค็นและเพียงแค่ต้องการเรียกใช้สิ่งนี้โดยผู้ที่เคยจัดการกับเรื่องนี้มาก่อน หมายเหตุ: ฉันจะใช้ HTTPS สำหรับคำขอ API ทั้งหมดดังนั้นดูเหมือนว่าโทเค็นจะปลอดภัยพอ ฉันใช้ AngularJS, C #, Web API 2 และ MVC5

1
ตำแหน่งที่จะวางคีย์ API: ส่วนหัว HTTP ที่กำหนดเอง VS ส่วนหัวการให้สิทธิ์ด้วยชุดรูปแบบที่กำหนดเอง
ฉันกำลังออกแบบ REST API โดยใช้การอนุญาต / การพิสูจน์ตัวตนผ่านทางคีย์ API ฉันพยายามคิดออกว่าเป็นที่ที่ดีที่สุดสำหรับสิ่งนั้นและพบว่าหลายคนแนะนำให้ใช้ส่วนหัว HTTP ที่กำหนดเองเช่นProjectName-Api-Keyเช่น: ProjectName-Api-Key: abcde แต่ก็เป็นไปได้และถูกต้องตามหลักอุดมการณ์ที่จะใช้Authorizationส่วนหัวกับชุดรูปแบบที่กำหนดเองเช่น: Authorization: ApiKey abcde ในทางกลับกันฉันพบการพิจารณาว่ารูปแบบการให้สิทธิ์ที่กำหนดเองอาจไม่คาดคิดและไม่ได้รับการสนับสนุนจากลูกค้าบางรายและนำไปสู่รหัสที่กำหนดเองอยู่ดีดังนั้นจึงเป็นการดีกว่าที่จะใช้ส่วนหัวที่กำหนดเอง คุณต้องการส่งคีย์ API ไปทางไหน

3
การจัดการการต่ออายุโทเค็น / การหมดอายุเซสชันใน RESTful API
ฉันกำลังสร้าง RESTful API ที่ใช้โทเค็น JWT สำหรับการรับรองความถูกต้องของผู้ใช้ (ที่ออกโดยloginปลายทางและส่งในส่วนหัวทั้งหมดหลังจากนั้น) และโทเค็นต้องได้รับการรีเฟรชหลังจากระยะเวลาคงที่ (เรียกrenewจุดสิ้นสุด ) เป็นไปได้ว่าเซสชัน API ของผู้ใช้จะไม่ถูกต้องก่อนที่โทเค็นจะหมดอายุดังนั้นจุดสิ้นสุดทั้งหมดของฉันเริ่มต้นด้วยการตรวจสอบว่า: 1) โทเค็นยังคงถูกต้องและ 2) เซสชันของผู้ใช้ยังคงถูกต้อง ไม่มีวิธีในการทำให้โทเค็นเป็นโมฆะโดยตรงเนื่องจากไคลเอนต์เก็บไว้ในเครื่อง ดังนั้นจุดสิ้นสุดของฉันทั้งหมดต้องส่งสัญญาณให้ลูกค้าทราบถึงสองเงื่อนไขที่เป็นไปได้: 1) ถึงเวลาต่ออายุโทเค็นหรือ 2) เซสชันนั้นไม่ถูกต้องและพวกเขาไม่ได้รับอนุญาตให้เข้าถึงระบบอีกต่อไป ฉันสามารถนึกถึงทางเลือกสองทางสำหรับจุดสิ้นสุดของฉันในการส่งสัญญาณลูกค้าเมื่อเกิดหนึ่งในสองเงื่อนไข (สมมติว่าลูกค้าสามารถปรับให้เข้ากับตัวเลือกใดตัวเลือกหนึ่ง): ส่งคืนรหัส http 401 (ไม่ได้รับอนุญาต) หากเซสชันไม่ถูกต้องหรือส่งคืนรหัส 412 (เงื่อนไขเบื้องต้นล้มเหลว) เมื่อโทเค็นหมดอายุและถึงเวลาเรียกrenewจุดสิ้นสุดซึ่งจะส่งคืนรหัส 200 (ok) ส่งคืน 401 สำหรับการส่งสัญญาณว่าเซสชันไม่ถูกต้องหรือโทเค็นหมดอายุแล้ว ในกรณีนี้ลูกค้าจะโทรหาrenewปลายทางทันทีถ้ามันคืน 200 โทเค็นจะถูกรีเฟรช แต่ถ้าrenewกลับ 401 ก็หมายความว่าไคลเอนต์ออกจากระบบ คุณจะแนะนำทางเลือกใดจากสองข้อด้านบน อันไหนจะเป็นมาตรฐานมากขึ้นเข้าใจง่ายและ / หรือสงบมากขึ้น? หรือคุณจะแนะนำวิธีการอื่นโดยสิ้นเชิง? คุณเห็นปัญหาที่ชัดเจนหรือความเสี่ยงด้านความปลอดภัยที่มีตัวเลือกอย่างใดอย่างหนึ่ง? …

2
API ควรใช้การรับรองความถูกต้องพื้นฐาน HTTP อย่างไร
เมื่อ API ต้องการให้ลูกค้ารับรองความถูกต้องฉันได้เห็นสถานการณ์ที่แตกต่างกันสองสถานการณ์ที่ใช้และฉันสงสัยว่ากรณีใดที่ฉันควรใช้กับสถานการณ์ของฉัน ตัวอย่าง 1. บริษัท ให้บริการ API เพื่ออนุญาตให้บุคคลที่สามรับรองความถูกต้องด้วยโทเค็นและข้อมูลลับโดยใช้ HTTP Basic ตัวอย่างที่ 2 API ยอมรับชื่อผู้ใช้และรหัสผ่านผ่าน HTTP Basic เพื่อตรวจสอบสิทธิ์ผู้ใช้ โดยทั่วไปแล้วพวกเขาจะได้รับโทเค็นกลับมาสำหรับคำขอในอนาคต การตั้งค่าของฉัน: ฉันจะมี JSON API ที่ฉันใช้เป็นแบ็กเอนด์สำหรับมือถือและเว็บแอป ดูเหมือนเป็นวิธีปฏิบัติที่ดีสำหรับทั้งแอปมือถือและเว็บในการส่งโทเค็นและความลับดังนั้นเฉพาะแอปทั้งสองนี้เท่านั้นที่สามารถเข้าถึง API ที่ปิดกั้นบุคคลที่สามอื่น ๆ แต่แอพมือถือและเว็บช่วยให้ผู้ใช้สามารถเข้าสู่ระบบและส่งโพสต์ดูข้อมูลของพวกเขาและอื่น ๆ ดังนั้นฉันต้องการให้พวกเขาเข้าสู่ระบบผ่านทาง HTTP พื้นฐานเช่นเดียวกับการร้องขอแต่ละครั้ง ฉันจะใช้ทั้งสองวิธีร่วมกันหรือส่งเฉพาะข้อมูลรับรองผู้ใช้ (ชื่อผู้ใช้และโทเค็น) ในแต่ละคำขอหรือไม่ หากฉันส่งเฉพาะข้อมูลรับรองผู้ใช้ฉันจะเก็บไว้ในคุกกี้บนไคลเอนต์หรือไม่

1
การรักษาความปลอดภัย REST API: HMAC / การแฮ็กคีย์กับ JWT
ฉันเพิ่งอ่านบทความนี้ที่มีอายุไม่กี่ปี แต่อธิบายวิธีที่ชาญฉลาดในการรักษา REST API ของคุณ เป็นหลัก: ลูกค้าแต่ละรายมีคู่คีย์สาธารณะ / ส่วนตัวที่ไม่ซ้ำกัน เฉพาะลูกค้าและเซิร์ฟเวอร์เท่านั้นที่รู้รหัสส่วนตัว มันไม่เคยถูกส่งผ่านสาย ด้วยการร้องขอแต่ละครั้งไคลเอนต์ใช้หลายอินพุต (การร้องขอทั้งหมดเองการประทับเวลาปัจจุบันและคีย์ส่วนตัว) และเรียกใช้ผ่านฟังก์ชัน HMAC เพื่อสร้างแฮชของการร้องขอ จากนั้นไคลเอ็นต์จะส่งคำขอปกติ (ซึ่งมีรหัสสาธารณะ) และแฮชไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์ค้นหาคีย์ส่วนตัวของลูกค้า (ตามคีย์สาธารณะที่ให้ไว้) และทำการตรวจสอบเวลาบางอย่าง (ที่ยอมรับกันโดยทั่วไปว่าฉันไม่เข้าใจ) ที่ยืนยันว่าคำขอไม่ตกเป็นเหยื่อของการโจมตีซ้ำ ถ้าทุกอย่างเรียบร้อยแล้วเซิร์ฟเวอร์จะใช้ไพรเวตคีย์และฟังก์ชั่น HMAC เดียวกันเพื่อสร้างการแฮชของคำขอ เซิร์ฟเวอร์จะเปรียบเทียบแฮชทั้งสอง (อันที่ส่งโดยลูกค้าเช่นเดียวกับที่สร้างขึ้น); หากตรงกันจะมีการตรวจสอบความถูกต้องและอนุญาตให้ดำเนินการต่อได้ จากนั้นฉันสะดุดJWTซึ่งฟังดูคล้ายกันมาก อย่างไรก็ตามบทความแรกไม่ได้พูดถึง JWT เลยและฉันก็สงสัยว่า JWT นั้นแตกต่างจากวิธีแก้ปัญหาข้างต้นหรือไม่และถ้าเป็นเช่นนั้น

1
รับรองความถูกต้องแอปมือถือดั้งเดิมโดยใช้ REST API
ฉันกำลังเริ่มโครงการใหม่เร็ว ๆ นี้ซึ่งกำหนดเป้าหมายแอปพลิเคชันมือถือสำหรับแพลตฟอร์มมือถือที่สำคัญทั้งหมด (iOS, Android, Windows) มันจะเป็นสถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์ แอพนี้เป็นทั้งข้อมูลและธุรกรรม สำหรับส่วนการทำธุรกรรมพวกเขาจะต้องมีบัญชีและเข้าสู่ระบบก่อนที่จะสามารถทำธุรกรรมได้ ฉันยังใหม่ต่อการพัฒนาอุปกรณ์พกพาดังนั้นฉันจึงไม่ทราบว่าส่วนการรับรองความถูกต้องจะทำอย่างไรบนแพลตฟอร์มเหล่านี้ ลูกค้าจะสื่อสารกับเซิร์ฟเวอร์ผ่าน REST API จะใช้หลักสูตร HTTPS ฉันยังไม่ได้ตัดสินใจว่าต้องการให้ผู้ใช้เข้าสู่ระบบเมื่อพวกเขาเปิดแอพหรือเมื่อพวกเขาทำธุรกรรม ฉันได้รับคำถามต่อไปนี้: 1) เช่นเดียวกับแอปพลิเคชั่น Facebook คุณจะป้อนข้อมูลรับรองของคุณเมื่อคุณเปิดแอปพลิเคชั่นเป็นครั้งแรกเท่านั้น หลังจากนั้นคุณจะลงชื่อเข้าใช้อัตโนมัติทุกครั้งที่คุณเปิดแอพ เราจะทำสิ่งนี้ให้สำเร็จได้อย่างไร? เพียงแค่เข้ารหัสและจัดเก็บข้อมูลรับรองบนอุปกรณ์และส่งทุกครั้งที่แอปเริ่มทำงาน 2) ฉันต้องพิสูจน์ตัวตนผู้ใช้สำหรับคำขอ (ธุรกรรม) ที่ทำกับ REST API หรือใช้วิธีตามโทเค็นหรือไม่? โปรดแนะนำวิธีอื่น ๆ ในการตรวจสอบสิทธิ์ ขอบคุณ!

5
ระบบการอนุญาตและการรับรองความถูกต้องสำหรับไมโครไซต์และผู้บริโภค
เราวางแผนที่จะปรับระบบของ บริษัท ให้เป็นระบบที่ใช้บริการแบบไมโคร บริการไมโครนี้จะถูกใช้โดยแอปพลิเคชันภายใน บริษัท ของเราและโดยคู่ค้าบุคคลที่สามหากจำเป็น หนึ่งสำหรับการจองหนึ่งสำหรับผลิตภัณฑ์ ฯลฯ เราไม่แน่ใจว่าจะจัดการกับบทบาทและขอบเขตอย่างไร แนวคิดคือการสร้างบทบาทผู้ใช้พื้นฐาน 3 ประการเช่นผู้ดูแลระบบตัวแทนและผู้ใช้ขั้นปลายและให้แอพสำหรับผู้บริโภคปรับขอบเขตหากจำเป็น ผู้ดูแลระบบสามารถสร้างอัปเดตอ่านและลบทรัพยากรทั้งหมดตามค่าเริ่มต้น (สำหรับ บริษัท ของพวกเขา) ตัวแทนสามารถสร้างอัปเดตและอ่านข้อมูลสำหรับ บริษัท ของพวกเขา ผู้ใช้ปลายทางสามารถสร้างอัปเดตลบและอ่านข้อมูล แต่ไม่สามารถเข้าถึงจุดปลายเดียวกันกับตัวแทนหรือผู้ดูแลระบบ พวกเขาจะสามารถสร้างหรือแก้ไขข้อมูลได้ไม่เพียง แต่อยู่ในระดับเดียวกับตัวแทนหรือผู้ดูแลระบบ ตัวอย่างเช่นผู้ใช้ปลายทางสามารถอัปเดตหรืออ่านข้อมูลบัญชีของพวกเขาเช่นเดียวกับเอเจนต์จะสามารถทำได้สำหรับพวกเขา แต่พวกเขาไม่สามารถดูหรืออัปเดตบันทึกของผู้ดูแลระบบได้ สมมติว่าตัวแทนโดยค่าเริ่มต้นสามารถสร้างอ่านและอัปเดตแต่ละทรัพยากรสำหรับ บริษัท ของพวกเขาและนั่นคือขอบเขตสูงสุดของพวกเขาซึ่งสามารถขอโทเค็น / เซสชั่นของพวกเขา แต่นักพัฒนาของลูกค้า (ผู้บริโภค API) ได้ตัดสินใจว่า อ่านและสร้างทรัพยากรบางอย่างเท่านั้น เป็นวิธีปฏิบัติที่ดีกว่าในการจัดการเรื่องนี้ในการรักษาความปลอดภัยภายในของเราหรือไม่และปล่อยให้พวกเขาเขียนข้อมูลนั้นในฐานข้อมูลของเราหรือให้ลูกค้าจัดการกับสิ่งนั้นภายในโดยการร้องขอโทเค็นที่มีขอบเขตน้อยกว่า ? วิธีนี้เราจะต้องติดตามขอบเขตโทเค็นเท่านั้น ข้อเสียของสิ่งนี้คือทีมของเราจะต้องสร้างกลไกการเข้าถึงที่ปรับแต่งในแอปพลิเคชันภายในของเรา ด้วยวิธีคิดนี้บริการไมโครและระบบการอนุญาตไม่ควรใส่ใจกับความต้องการของลูกค้าเพราะพวกเขาเป็นเพียงผู้บริโภคและไม่ได้เป็นส่วนหนึ่งของระบบ (แม้ว่าผู้บริโภคเหล่านั้นจะเป็นแอพภายในของเราเอง)? การมอบหมายนี้เป็นแนวทางที่ดีหรือไม่?

7
วิธีการพิสูจน์ตัวตนผู้ใช้จากแอปพลิเคชันไคลเอนต์
ฉันพัฒนาแอพพลิเคชั่นซึ่งจะรองรับผู้ใช้หลายคน สิ่งที่ฉันไม่สามารถคิดออกวิธีการตรวจสอบลูกค้า / ผู้ใช้ ฉันกำลังสร้างแอพอย่างhttp://quickblox.com/ที่ฉันจะให้ข้อมูลประจำตัวแก่ผู้ใช้ของฉันและพวกเขาจะใช้แอปเหล่านี้เพื่อสร้างแอปพลิเคชั่นNที่พวกเขาไม่สามารถใส่ชื่อผู้ใช้และรหัสผ่านเพื่อรับรองความถูกต้อง สมมติว่ามันเป็นไปตาม(เหมือน QuickBlox) 1. ผู้ใช้สร้างบัญชีในเว็บไซต์ของฉัน 2. ผู้ใช้สามารถสร้างคีย์ N API และข้อมูลรับรองความลับ (สำหรับหลายแอพ) 3. ผู้ใช้จะใช้ข้อมูลรับรองเหล่านี้ในแอปพลิเคชัน (Android, iOS, Javascript ฯลฯ ... ) เพื่อพูดคุยกับ REST API ของฉัน (REST API มีการเข้าถึงแบบอ่านและเขียน) ความกังวลของฉัน? ผู้ใช้จะใส่ข้อมูลประจำตัว (คีย์ API และคีย์หลั่ง) ในแอปพลิเคชันที่พวกเขาสร้างจะเกิดอะไรขึ้นถ้ามีคนรับคีย์เหล่านี้และพยายามเลียนแบบผู้ใช้ (โดยการแยกข้อมูล APK หรือดูโค้ด JavaScript โดยตรง ฉันผิดตรงไหนเหรอ? ฉันสับสนในการออกแบบกลไกผู้ใช้สามระดับนี้

3
การพิสูจน์ตัวตนเว็บโดยใช้ PKI Certs
ฉันเข้าใจ PKI ค่อนข้างดีจากมุมมองแนวคิด - เช่นกุญแจส่วนตัว / กุญแจสาธารณะ - คณิตศาสตร์ที่อยู่เบื้องหลังการใช้แฮชและการเข้ารหัสเพื่อลงนามใบรับรองการลงนามในธุรกรรมหรือเอกสารดิจิทัลเป็นต้นฉันยังทำงานในโครงการที่ openssl ไลบรารี C ถูกใช้กับ certs สำหรับการรักษาความปลอดภัยการสื่อสารและการพิสูจน์ตัวตน ฉันคุ้นเคยอย่างมากกับเครื่องมือบรรทัดคำสั่ง openssl อย่างไรก็ตามฉันมีประสบการณ์น้อยมากเกี่ยวกับโครงการที่เปิดใช้งาน PKI บนเว็บดังนั้นฉันจึงพยายามออกแบบและกำหนดรหัสโครงการส่วนบุคคลเพื่อทำความเข้าใจกับสิ่งนี้ให้ดีขึ้น ความต้องการ นี่คือเว็บไซต์สำหรับธนาคาร ผู้ใช้บริการธนาคารทางอินเทอร์เน็ตทั้งหมดได้รับอนุญาตให้ใช้ใบรับรองใด ๆ ที่ออกโดย CA ที่รู้จักไม่กี่ (verisign, Thawte, entrust เป็นต้น) ธนาคารจะไม่รับผิดชอบต่อการจัดหาใบรับรองสำหรับผู้ใช้ ใบรับรองเหล่านี้จะใช้สำหรับการรับรองความถูกต้องไปยังเว็บไซต์ของธนาคาร แพลตฟอร์ม / ระบบปฏิบัติการ ฯลฯ ยังคงไม่ได้รับการแก้ไข ออกแบบ ฉันสงสัยว่าอะไรคือวิธีที่ดีที่สุดในการตรวจสอบสิทธิ์ ฉันเห็นว่า Apache มีวิธีเปิดใช้งาน 2 วิธี ssl - ในกรณีนี้ฉันคิดว่าการนำทางไปยังเว็บไซต์จะขอใบรับรองจากผู้ใช้โดยอัตโนมัติ แต่ฉันไม่แน่ใจว่านี่เพียงพอหรือไม่เพราะดูเหมือนว่าทุกอย่างจะถูกตรวจสอบหรือไม่ว่าใบรับรองนั้นได้รับการลงนามโดย CA …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.