웹 API 인증 기술


26

사람들을 위해 xml / json을 제공하기위한 asp.net MVC 웹 서비스 프레임 워크가 있습니다. 요청을 가져 오지만 사용자를 인증하는 가장 좋은 방법 (자바 스크립트 또는 OO 언어로 코딩하는 사용자에게는 빠르고 쉽고 사소한)을 파악하기 위해 고심하고 있습니다. 우리의 데이터가 민감하거나 다른 것이 아니라 사용자가 등록하기를 원하므로 이메일 주소를 통해 변경 사항을 알리고 사용량을 추적 할 수 있습니다.

이전 시도에서 우리는 URI에 사용자 이름이 있었고 사용자 이름이 존재하는지 확인하고 사용법에 따라 db 테이블을 증가시킵니다. 이것은 매우 기본적이지만 데모를 사용자 이름 등으로 사용하는 사람들을 알았으므로 좀 더 정교해야합니다.

어떤 인증 기술을 사용할 수 있습니까? 주요 플레이어는 무엇을 사용 / 사용합니까?


"주요 선수"는 무엇이라고 생각하십니까? 몇 가지 예를 나열하십시오. 당신이 그것을하는 동안, 우리가 그들이 무엇을 볼 수 있도록 "주요 플레이어"API 정의에 대한 링크를 포함하십시오.
S.Lott

트위터 / 페이스 북 / 구글 / 플리커를 주요 플레이어로 생각합니다. developers.facebook.com apiwiki.twitter.com
Steve

답변:


10

나는에 그 질문에 질문 에 StackOverflow을 당신은 할 수 여기를 읽어 . 또한 내 자신의 질문에 대한 답변 을 참조하십시오 . 각 요청에 대해 비밀번호를 전달하지 않고 SSL 또는 암호화를 사용하지 않고 정확하게 인증하는 것입니다. 간단한 해싱.


나는 당신의 해결책을 좋아하지 않습니다.
Steve

Steve : Flickr 솔루션 사용

오픈 소스 깜박임 솔루션이 있습니까? 아니면 API를 읽고 알아 내야합니까?
Steve

그들의 API를 읽으십시오. 매우 간단합니다. SSL이없는 경우 내 방법만큼 안전하지는 않지만 매우 우수합니다.

귀하의 md5 솔루션은 "자바 사용자를위한 사소한"법안에 맞지 않는 것 같습니다. 플리커 API를 좀 더 확인해야합니다. 나는 그것을 보았지만 몇 가지 용어를 연구해야합니다. 주로 거품이 무엇입니까.
Steve

3

이 비디오 는 WCF / REST 서비스에서 API 키를 사용하는 흥미로운 방법입니다. 코드 .


이것은 사용자 이름을 api 키라고 부르는 것을 제외하고 서비스에 사용자 이름을 넣는 것과 같습니다. 자바 스크립트 인 경우 누군가가 페이지 소스를보고 키를 복사하여 다른 곳에서 사용할 수 있습니다. API 키가 유효해야하며 xyz.com에서 가져와야하므로 API 키를 호출 도메인에 연결 하시겠습니까?
Steve

또한 이것은 @KinGBin이 제안한 것과 중복됩니까?
Steve

0

나는 당신의 비주얼 스튜디오를 사용합니다. 4.0 프레임 워크와 함께 vs 2010을 사용하는 경우 2010과 비교하여 "API 키 확인을 사용하는 WCF REST 서비스"템플릿을 확인할 수 있습니다.


1
나는 그것을 조사해야 할 것이다. 개인적으로 WCF에서 벗어나고 싶습니다.
Steve

이것은 흥미롭지 만 쿼리 문자열에서 APIKey를 전달하는 것처럼 보입니다. SSL을 사용하더라도 발신자와 수신자 사이의 모든 사람이 API 키를 볼 수 있다는 의미는 아닙니까?
JMarsch

0

나는 항상 웹 서비스에 HTTP 인증을 사용합니다. 인증 자체는 웹 서버에 의해 처리되며 아마도 귀하의 경우 IIS 일 것입니다. 그런 다음 데이터베이스, LDAP 저장소 등을 인증하도록 IIS를 구성합니다.

그런 다음 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;
}

자바 스크립트 클라이언트로 어떻게 이것을 할 것입니까?
Steve

클라이언트 = 새로운 XMLHttpRequest (); client.open (method, url, async, user, password);
ewindisch

답변 jquery 예제를 추가
ewindisch

1
따라서 사용자 이름 비밀번호 조합은 소스에서 일반 텍스트로 존재해야합니다. 좋은 생각처럼 보이지 않습니다.
Steve

1
좋아, 기본적으로 API 요청을 시작하려면 로그인 화면에 사용자 이름 / 비밀번호를 입력해야합니까? 그 해결책은 끔찍하다. 공개 웹 사이트의 모든 사용자를 등록해야합니까?
Steve
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.