Install-Package AutoMapper -Version 3.2.1 Install-Package System.IdentityModel.Tokens.Jwt -Version 3.0.2 Install-Package Microsoft.Owin.Security -Version 2.1.0 Install-Package Microsoft.Owin.Security.OAuth -Version 2.1.0 Install-Package Microsoft.Owin.Security.Cookies -Version 2.1.0 Install-Package Microsoft.Owin.Security.Jwt -Version 2.1.0 Install-Package Microsoft.Owin.Security.ActiveDirectory -Version 2.1.0 Install-Package Microsoft.Owin.Security.Facebook -Version 2.1.0 Install-Package Microsoft.Owin.Security.Google -Version 2.1.0 Install-Package Microsoft.Owin.Security.Twitter -Version 2.1.0 Install-Package Microsoft.Owin.Security.MicrosoftAccount -Version 2.1.0 Install-Package WindowsAzure.MobileServices.Backend.Entity -Version 1.0.405
public class DemoCredentials: ProviderCredentials { public string AccessToken { get; set; } public DemoCredentials() : base(DemoLoginProvider.ProviderName) { } } public class DemoLoginProvider: LoginProvider { public const string ProviderName = "Demo"; public override string Name { get { return ProviderName; } } public DemoLoginProvider(IServiceTokenHandler tokenHandler) : base(tokenHandler) { } public override void ConfigureMiddleware(Owin.IAppBuilder appBuilder, Microsoft.WindowsAzure.Mobile.Service.ServiceSettingsDictionary settings) { return; } public override ProviderCredentials CreateCredentials(System.Security.Claims.ClaimsIdentity claimsIdentity) { System.Security.Claims.Claim name = claimsIdentity.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier); System.Security.Claims.Claim providerAccessToken = claimsIdentity.FindFirst(ServiceClaimTypes.ProviderAccessToken); DemoCredentials credentials = new DemoCredentials { UserId = this.TokenHandler.CreateUserId(Name, name != null ? name.Value : null), AccessToken = providerAccessToken != null ? providerAccessToken.Value : null }; return credentials; } public override ProviderCredentials ParseCredentials(Newtonsoft.Json.Linq.JObject serialized) { return serialized.ToObject<DemoCredentials>(); } }
[HttpPost] [Route("api/Authentication/Authenticate")] [AllowAnonymous] public async Task<HttpResponseMessage> Authenticate() { DemoLoginProvider provider = new DemoLoginProvider(Handler); System.Security.Claims.ClaimsIdentity claimsIdentity = new System.Security.Claims.ClaimsIdentity(); claimsIdentity.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.NameIdentifier, "fakeUser")); LoginResult loginResult = provider.CreateLoginResult(claimsIdentity, Services.Settings.MasterKey); return Request.CreateResponse(HttpStatusCode.OK, loginResult); }
public IServiceTokenHandler Handler { get; set; }
Install-Package WindowsAzure.MobileServices
public async Task AuthenticateAsync() { LoginResultDTO loginResult = await _channel.InvokeApiAsync<LoginResultDTO>("Authentication/Authenticate").ConfigureAwait(false); MobileServiceUser user = new MobileServiceUser(loginResult.User.UserId) { MobileServiceAuthenticationToken = loginResult.AuthenticationToken }; _channel.CurrentUser = user; }
Source: https://habr.com/ru/post/247199/
All Articles