// OAuthAuthorizationServerProvider sınıfının client erişimine izin verebilmek için ilgili ValidateClientAuthentication metotunu override ediyoruz. //public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) //{ // context.Validated(); // return Task.FromResult<object>(null); //} // OAuthAuthorizationServerProvider sınıfının kaynak erişimine izin verebilmek için ilgili GrantResourceOwnerCredentials metotunu override ediyoruz. //public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) //{ // // CORS ayarlarını set ediyoruz. // context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); // _kullanici = await _kullanicilarService.GetKullanicilarByKullaniciAdiAsync(context.UserName); // if (_kullanici == null) // { // context.SetError("invalid_grant", "Sistemde kayıtlı böyle bir kullanıcı bulunmamaktadır."); // return; // } // if (_kullanici != null) // { // byte[] salt = Convert.FromBase64String(_kullanici.Salt); // byte[] passwordSaltedHash = Utility.Hash(context.Password, salt); // if (Convert.ToBase64String(passwordSaltedHash).Equals(_kullanici.SifreHash, StringComparison.InvariantCulture)) // { // var identity = new ClaimsIdentity(context.Options.AuthenticationType); // identity.AddClaim(new Claim("userName", _kullanici.KullaniciAdi)); // identity.AddClaim(new Claim("email", _kullanici.Email)); // identity.AddClaim(new Claim("userID", _kullanici.Id.ToString())); // context.Validated(identity); // context.Request.Context.Authentication.SignIn(identity); // } // else // context.SetError("invalid_grant", "Kullanıcı adı veya şifre yanlış."); // } //} //public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context) //{ // var accessToken = context.AccessToken; // _kullanicilarService.InsertKullaniciOturumAsync(new KullaniciOturumModel // { // AuthToken = context.AccessToken, // KullaniciId = _kullanici.Id, // SonlanmaTarihi = DateTime.Now.AddMinutes(2) // }); // return Task.FromResult<object>(null); //} #endregion #region v.2.0.0 //public override async Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context) //{ // //if (context.ClientId == Clients.Client1.Id) // //{ // // context.Validated(Clients.Client1.RedirectUrl); // //} // //else if (context.ClientId == Clients.Client2.Id) // //{ // // context.Validated(Clients.Client2.RedirectUrl); // //} // //return Task.FromResult(0); //} /// <summary> /// ValidateClientAuthentication /// </summary> /// <param name="context"></param> /// <returns></returns> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { //context.Validated(); string clientId; string clientSecret; _logger.Debug(GetType(), null, "Checking clientId & clientSecret"); if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } _logger.Debug(GetType(), null, "Is ClientId null"); if (context.ClientId == null) { context.SetError("invalid_clientId", "ClientId parametre olarak gönderilmelidir."); return; } _logger.Debug(GetType(), null, "GetByClientIdAsync({0})", context.ClientId); _client = await _clientService.GetByClientIdAsync(context.ClientId); if (_client == null) { context.SetError("invalid_clientId", string.Format("Sistemde kayıtlı böyle bir client bulunmamaktadır.", context.ClientId)); return; } //Client Secret ile işlem yapılmak istenirse açılmalıdır. //if (_client.ApplicationType == ApplicationTypes.WebDevelopment) //{ // if (string.IsNullOrWhiteSpace(clientSecret)) // { // context.SetError("invalid_clientId", "Client secret should be sent."); // return Task.FromResult<object>(null); // } // else // { // if (client.Secret != Helper.GetHash(clientSecret)) // { // context.SetError("invalid_clientId", "Client secret is invalid."); // return Task.FromResult<object>(null); // } // } //} if (!_client.Active) { context.SetError("invalid_clientId", "Client aktif değildir."); return; } context.OwinContext.Set <string>("as:clientAllowedOrigin", _client.AllowedOrigin); context.OwinContext.Set <string>("as:clientRefreshTokenLifeTime", _client.RefreshTokenLifeTime.ToString()); context.Validated(); }