ASP.NET Web API 2: 외부 인증 서비스로 로그인하려면 어떻게 해야 합니까?
이 게시물 http://www.asp.net/web-api/overview/security/external-authentication-services 에 의하면...(새로운 ASP로) 로컬 인증 서비스로 로그인 할 수 있습니다.NET 아이덴티티 프레임워크)
Visual Studio 2013 SPA 템플릿에서 생성된 기본 웹 API(모바일 앱 또는 Postman에서)를 적절하게 호출할 수 있는 방법을 찾을 수 없습니다.
누가 나를 도와줄 수 있나요?
오늘도 같은 문제가 발생하여 다음과 같은 해결책을 찾았습니다.
사용 가능한 모든 공급자를 처음에 가져옵니다.
GET /api/Account/ExternalLogins?returnUrl=%2F&generateState=true
응답 메시지는 json 형식의 목록입니다.
[{"name":"Facebook",
"url":"/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A15359%2F&state=QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1",
"state":"QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1"}]
이제 GET 요청을 사용할 공급자의 url로 보냅니다.외부 공급자의 로그인 페이지로 리디렉션됩니다.자격 증명을 입력하면 사이트로 다시 리디렉션됩니다.이제 파싱합니다.access_token
url에서
http://localhost:15359/#access_token=[..]&token_type=bearer&expires_in=[..]&state=QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1
사용자가 이미 로컬 계정을 가지고 있는 경우.AspNet.Cookies
쿠키가 설정되면 완료됩니다.그렇지 않다면, 오직..AspNet.ExternalCookie
쿠키가 설정되어 있고 로컬 계정을 등록해야 합니다.
사용자가 등록되어 있는지 확인할 수 있는 api가 있습니다.
GET /api/Account/UserInfo
반응은.
{"userName":"xxx","hasRegistered":false,"loginProvider":"Facebook"}
사용자의 로컬 계정을 만들려면
POST /api/Account/RegisterExternal
Authorization: Bearer VPcd1RQ4X... (access_token from url)
Content-Type: application/json
{"UserName":"myusername"}
이제 이전과 동일한 요청을 공급자 url과 함께 보냅니다.
GET /api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A15359%2F&state=QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1
하지만 이번에는 사용자가 이미 계정을 가지고 있고 인증을 받습니다.전화를 걸어 확인할 수 있습니다./api/Account/UserInfo
다시.
이제 추출합니다.access_token
url에서당신은 추가해야 합니다.Authorization: Bearer [access_token]
요청할 때마다 헤더를 입력합니다.
저는 이 외부 인증이 어떻게 작동하는지 꽤 상세하게 보여주는 다른 게시물을 발견했습니다.클라이언트는 WPF이고 서버는 ASP를 사용합니다.NET 아이덴티티.
Android App에서 Web Api 2 External Login with Facebook을 사용하려는 사람들에게 이 게시물은 우리가 해야 할 일의 첫 부분만 설명하고 있습니다.다음은 전체 그림에 대한 매우 설명적인 링크입니다.
[Android App에서 Facebook 토큰을 통해 WebAPI에 대한 인증된 액세스 권한
언급URL : https://stackoverflow.com/questions/21065648/asp-net-web-api-2-how-do-i-log-in-with-external-authentication-services
'programing' 카테고리의 다른 글
c/c++ 클라이언트 서버 크로스 플랫폼 프로그램에서 gssapi kerberos를 사용하는 방법? (0) | 2023.09.21 |
---|---|
REST 백엔드 / Ajax Front End Application의 인증 및 인증 시스템 설계 방법 (0) | 2023.09.21 |
리눅스에서 c의 bool type을 사용하기 위해 어떤 헤더 파일을 포함합니까? (0) | 2023.09.21 |
WordPress 및 BuddyPress 스팸 차단 (0) | 2023.09.21 |
MySQL에서 128비트 숫자를 한 열에 저장하는 방법? (0) | 2023.09.21 |