programing

ASP.NET Web API 2: 외부 인증 서비스로 로그인하려면 어떻게 해야 합니까?

subpage 2023. 9. 21. 20:23
반응형

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_tokenurl에서

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_tokenurl에서당신은 추가해야 합니다.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

반응형