1

Я разработал модуль для Dotnetnuke (8) с контентами WebAPI 2 через API DNN Этот API используется в Android-приложении. Чтобы получить доступ к функциям, заполняемым через API, пользователь должен пройти аутентификацию.Dotnetnuke OAUTH/OWIN внешний Вход с facebook

Я уже реализовал аутентификацию JWT (Json Web Token) с помощью WebAPI и логин с именем пользователя/паролем из приложения прекрасно работает с этим методом.

Теперь я также хочу, чтобы пользователи могли войти в систему через свой facebook-login и получить свое имя и адрес электронной почты и фотографию из своего профиля facebook для аутентификации и авторизации их через базу данных DNN-пользователей и разрешить/запретить их использование функции API.

Я много гулял и много читал в блогах и статьях о внешней аутентификации за последние несколько дней. Следующий очень интересный и уже дал мне ANN хорошее представление о том, как этот процесс может работать:

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 Method в моем проекте.

Если кто-нибудь может помочь мне в правильном направлении, ваша помощь очень ценится. Спасибо заранее и наилучшими пожеланиями

Дон

EDIT: DNN-API предоставляет все JWT-функциональности я просто нужно определить пути и функции API. например: '

<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 Web-API для проверки подлинности: example.com/DesktopModules/JwtAuth/API/mobile/Login , где я прохожу имя пользователя и пароль в request- тело как json-объект (Документация на dnnsoftware [dot] com/docs/administrators/jwt /)

Это все работает так, как ожидалось. Дело в том, как сделать работу facebook логин в качестве внешнего входа работы вместе с моим JWT-AUTH

ответ

0

Web апи делает проверку подлинности само по себе, Yout нужно создать OAuthAuthorizationServerOptions и настроить веб-интерфейс API для использования методов, существует пример того, как auth на основе api работает с стандартным маркером-носителем.

ApplicationOAuthProvider его класс, который генерирует токен для удаления с OAuthAuthorizationServerProvider.

Чтобы вызвать метод из генератора токенов, вам необходимо перейти на путь /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