1

DNAPA 을 통해 WebAPI 2 엔드 포인트가있는 Dotnetnuke (8) 모듈을 개발했습니다.이 API는 Android-App에서 사용됩니다. API를 통해 채워지는 기능에 액세스하려면 사용자가 인증을 받아야합니다.Dotnetnuke OAUTH/OWIN 외부 로그인 페이스 북으로

WebAPI를 사용하여 JWT (Json Web Token) 인증을 이미 구현했으며이 방법으로 앱의 사용자 이름/비밀번호로 로그인해도 문제가 없습니다.

이제는 사용자가 facebook-login을 통해 로그인하고 facebook 프로필에서 자신의 이름과 이메일 및 사진을 가져 와서 DNN-Users-Database를 통해 인증하고 권한을 부여 할 수있게하고 싶습니다. API 함수.

지난 몇 일간 많은 외부 검색에 대한 블로그 포스트와 기사를 많이 읽었습니다. 이미 매우 흥미 다음과 것은 나에게 과정이 작동하는 방법 앤 좋은 통찰력을 준 :

http://bitoftech.net/2014/08/11/asp-net-web-api-2-external-logins-social-logins-facebook-google-angularjs-app/

Registering Web API 2 external logins from multiple API clients with OWIN Identity

https://www.asp.net/web-api/overview/security/external-authentication-services

하지만 난 정말 찾을 수 없습니다 (그리고 내가 안 보인다 내 dnn-API 및 JSON-WebToken Auth 메소드를 사용하여 프로젝트에서이 작업을 수행 할 수있는 방법과 방법에 대해 알고 있습니다.

누구든지 올바른 방향으로 나를 도울 수 있다면, 당신의 도움은 높이 평가됩니다. 미리 감사 및 종류

돈을

편집에 관해서는 : DNN-API는 난 그냥 API를 경로와 함수를 정의하는 데 필요한 모든 JWT-기능을 제공합니다. 예 : '

<Route("{controller}/{action}/{p1}")> 
    <AcceptVerbs("GET")> 
    <AllowAnonymous> 
    Public Function userInf(ByVal p1 As String) As HttpResponseMessage 
     Dim response As New HttpResponseMessage 
     Dim pID As Integer = DotNetNuke.Entities.Portals.PortalController.Instance.GetCurrentPortalSettings.PortalId 
     Dim objUserInfo As New DotNetNuke.Entities.Users.UserInfo 
     objUserInfo = DotNetNuke.Entities.Users.UserController.Instance.GetUserById(pID, CInt(p1)) 
     If Not objUserInfo Is Nothing Then 
      If objUserInfo.UserID > 0 Then 
       response = Request.CreateResponse(System.Net.HttpStatusCode.OK, JsonConvert.SerializeObject("Username: " & objUserInfo.Username.ToString)) 
      Else 
       ' Not logged in 
       response = Request.CreateResponse(System.Net.HttpStatusCode.Unauthorized, "Not found") 
      End If 
     Else 
      ' Not logged in 
      response = Request.CreateResponse(System.Net.HttpStatusCode.Unauthorized, "Not logged in") 
     End If 

     response.Headers.Add("Access-Control-Allow-Origin", CORS)      ' <- Allow CORs !!!! 
     ' response.Headers.Add("Access-Control-Request-Method", "*") 
     Return response 
    End Function 

DNN의 웹 API에 대한 API 경로가 인증입니다 : 내가 요청 -에 사용자 이름과 암호를 전달 example.com/DesktopModules/JwtAuth/API/mobile/Login (dnnsoftware 문서 [도트] com/docs/administrators/jwt /)

이 모든 것이 예상대로 작동합니다. 이제는 내 JWT-AUTH와 함께 외부 로그인 작업으로 페이스 북 로그인 작업을하는 방법입니다.

답변

0

웹 API 자체 인증 만하고 OAuthAuthorizationServerOptions을 만들고 메소드를 사용하도록 웹 API를 구성해야합니다. 웹 API 토큰 기반 인증이 독립 실행 형 무기명 토큰과 함께 작동하는 예

여기 ApplicationOAuthProviderOAuthAuthorizationServerProvider에서 내재 토큰을 생성하는 클래스.

토큰 생성기에서 메소드를 호출하려면 /api/token 경로로 가야하며 토큰 생성기에서 정의 할 토큰과 사용자 클레임이 자동으로 요청됩니다.

public void ConfigureOAuth(IAppBuilder app) 
    { 
     OAuthBearerOptions = new OAuthBearerAuthenticationOptions(); 

     var oauthServerOptions = new OAuthAuthorizationServerOptions() 
     { 
      AllowInsecureHttp = true, 
      TokenEndpointPath = new PathString("/api/token"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromHours(24), 
      Provider = new ApplicationOAuthProvider(), 
     }; 

     // Token Generation 
     app.UseOAuthAuthorizationServer(oauthServerOptions); 
     app.UseOAuthBearerAuthentication(OAuthBearerOptions); 
    } 

희망 도움말.

+0

의견을 보내 주신 Dmitriy에게 감사드립니다. 위에서 쓴 것처럼 DotNetNuke CMS - API에서 작업 중입니다 ... – user2488433