เทคนิคการพิสูจน์ตัวตนของ Web api


26

เรามีเฟรมเวิร์กบริการเว็บ asp.net MVC สำหรับการให้บริการ xml / json สำหรับผู้คนรับคำขอ แต่กำลังพยายามหาวิธีที่ดีที่สุด (รวดเร็วง่ายและไม่สำคัญสำหรับผู้ใช้ที่เข้ารหัสด้วยจาวาสคริปต์หรือภาษา OO) เพื่อรับรองความถูกต้องของผู้ใช้ ไม่ใช่ว่าข้อมูลของเรามีความละเอียดอ่อนหรืออะไรเราเพียงต้องการให้ผู้ใช้ลงทะเบียนเพื่อให้เราสามารถมีที่อยู่อีเมลของพวกเขาเพื่อแจ้งให้ทราบถึงการเปลี่ยนแปลงและติดตามการใช้งาน

ในความพยายามครั้งก่อนของเราเรามีชื่อผู้ใช้ใน URI และจะทำให้แน่ใจว่าชื่อผู้ใช้นั้นมีอยู่และเพิ่มตารางฐานข้อมูลด้วยการใช้งาน นี่เป็นขั้นพื้นฐานสุด ๆ แต่เราจะสังเกตเห็นคนที่ใช้การสาธิตเป็นชื่อผู้ใช้ ฯลฯ ดังนั้นเราจึงต้องการให้มันซับซ้อนขึ้นเล็กน้อย

มีเทคนิคการรับรองความถูกต้องอะไรบ้าง สิ่งที่ผู้เล่นสำคัญใช้ / ทำ


คุณคิดว่าอะไรคือ "ผู้เล่นหลัก" โปรดแสดงรายการตัวอย่าง ในขณะที่คุณอยู่ในนั้นโปรดรวมลิงก์ไปยังคำจำกัดความ API "ผู้เล่นหลัก" เพื่อให้เราสามารถเห็นสิ่งที่พวกเขาทำ
S.Lott

ฉันจะพิจารณา twitter / facebook / google / สั่นไหวผู้เล่นรายใหญ่ developers.facebook.com apiwiki.twitter.com
Steve

คำตอบ:


10

ฉันถามคำถามว่าในวันที่StackOverflowและคุณสามารถอ่านได้ที่นี่ ดูคำตอบสำหรับคำถามของฉันด้วย สิ่งที่เกี่ยวกับการรับรองความถูกต้องโดยไม่ต้องผ่านรหัสผ่านสำหรับแต่ละคำขอและไม่มี SSL หรือการเข้ารหัส เพียงแค่คร่ำเครียดง่ายๆ


ฉันไม่แน่ใจว่าฉันชอบทางออกของคุณ
Steve

Steve: ใช้วิธีแก้ปัญหา Flickr

จะมีวิธีการสั่นโอเพนซอร์สหรือไม่ฉันต้องอ่าน API ของพวกเขาและคิดออก?
Steve

อ่าน API ของพวกเขามันง่ายมาก ไม่ปลอดภัยเท่ากับวิธีการของฉันหากคุณไม่มี SSL แต่ดีมาก

โซลูชัน md5 ของคุณดูเหมือนจะไม่พอดีกับใบเรียกเก็บเงินกับ "ผู้ใช้ javascript เล็กน้อย" ฉันจะต้องตรวจสอบ flickr API เพิ่มเติม ฉันเหลือบมองไปที่มัน แต่ต้องศึกษาคำศัพท์บางอย่าง ส่วนใหญ่เป็นกบอะไร
Steve

3

วิดีโอนี้เป็นวิธีที่น่าสนใจในการใช้คีย์ API กับบริการ WCF / REST ของคุณ รหัส


นี่เป็นความคิดเดียวกับการใส่ชื่อผู้ใช้ในการบริการยกเว้นพวกเขาจะเรียกมันว่าคีย์ api บางคนสามารถดูที่มาของหน้าเว็บได้หากจาวาสคริปต์และคัดลอกรหัสและใช้ที่อื่น คุณต้องการให้มีการเชื่อมโยงรหัส api กับโดเมนการโทรเพื่อให้รหัส api นั้นถูกต้องและจำเป็นต้องมาจาก xyz.com หรือไม่
Steve

นี่เป็นสิ่งที่ซ้ำกับสิ่งที่ @KinGBin แนะนำหรือไม่
Steve

0

ฉันจะใช้สตูดิโอภาพของคุณ หากคุณใช้ vs 2010 กับ 4.0 เฟรมเวิร์กคุณสามารถดูเทมเพลต "WCF REST Service พร้อมการยืนยันคีย์ API" ใน vs 2010


1
ฉันจะต้องดูว่า ฉันต้องการหลีกหนีจาก WCF ส่วนตัว
Steve

สิ่งนี้น่าสนใจ แต่ดูเหมือนว่ามันจะส่ง APIKey ในสตริงการสืบค้น นั่นไม่ได้หมายความว่าทุกคนที่อยู่ระหว่างผู้โทรและผู้รับจะเห็นคีย์ API แม้ว่าคุณจะใช้ SSL หรือไม่
JMarsch

0

ฉันใช้การพิสูจน์ตัวตน HTTP เสมอสำหรับบริการบนเว็บ การตรวจสอบตัวเองจะได้รับการจัดการโดยเว็บเซิร์ฟเวอร์ของคุณ IIS น่าจะเป็นในกรณีของคุณ จากนั้นคุณจะกำหนดค่า IIS ให้รับรองความถูกต้องกับฐานข้อมูลของคุณที่เก็บ LDAP หรือที่คล้ายกัน

จากนั้นคุณจะเข้าถึงชื่อผู้ใช้ผ่านทางคุณสมบัติUser.Identity.Name

แก้ไข : ตัวอย่างการตรวจสอบ JQuery:

/* I found that providing the username and password both in the
   the arguments and in the url parameter seems to have better compatibility,
   if it works well for you, it is highly advisable to remove the 
   user/pass from the url */

function doLogin (){
  $.ajax({
    username: $('#username').val(),
    password: $('#password').val(),
    url: 'https://'+$('#username').val()+':'+$('#password').val()+'@api.example.com',
    dataType: 'jsonp',
    context: $('#result'),
    success: function(d) { $(this).html(d); $(location).attr('href','https://api.example.com/success'); }
    });
    return false;
}

คุณจะทำสิ่งนี้กับไคลเอนต์ Javascript ได้อย่างไร
Steve

ลูกค้า = ใหม่ XMLHttpRequest (); client.open (เมธอด, url, async, ผู้ใช้, รหัสผ่าน);
ewindisch

เพิ่มตัวอย่าง jQuery เพื่อตอบ
ewindisch

1
ดังนั้นการรวมรหัสผ่านชื่อผู้ใช้จะต้องอยู่ในรูปแบบข้อความล้วนในแหล่งที่มา ดูเหมือนจะไม่เป็นความคิดที่ดี
Steve

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