public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_clientId", "client_Id is not set"); return Task.FromResult<object>(null); } var resource = ResourceStore.FindResource(context.ClientId); if (resource == null) { context.SetError("invalid_clientId", string.Format("Invalid client_id '{0}'", context.ClientId)); return Task.FromResult<object>(null); } context.Validated(); return Task.FromResult<object>(null); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId = string.Empty; string clientSecret = string.Empty; Client client = null; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { //Remove the comments from the below line context.SetError, and invalidate context //if you want to force sending clientId/secrects once obtain access tokens. context.Validated(); //context.SetError("invalid_clientId", "ClientId should be sent."); return Task.FromResult<object>(null); } using (AuthRepository _repo = new AuthRepository()) { client = _repo.FindClient(context.ClientId); } if (client == null) { context.SetError("invalid_clientId", string.Format("Client '{0}' is not registered in the system.", context.ClientId)); return Task.FromResult<object>(null); } if (client.ApplicationType == ApplicationTypes.NativeConfidential) { if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("invalid_clientId", "Client secret should be sent."); return Task.FromResult<object>(null); } else { if (client.Secret != HashHelper.GetHash(clientSecret)) { context.SetError("invalid_clientId", "Client secret is invalid."); return Task.FromResult<object>(null); } } } if (!client.Active) { context.SetError("invalid_clientId", "Client is inactive."); return Task.FromResult<object>(null); } context.OwinContext.Set<string>("as:clientAllowedOrigin", client.AllowedOrigin); context.OwinContext.Set<string>("as:clientRefreshTokenLifeTime", client.RefreshTokenLifeTime.ToString()); context.Validated(); return Task.FromResult<object>(null); }
/// <summary> /// Validates the client id /// </summary> /// <param name="context"></param> /// <returns></returns> public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; // Gets the clientid and client secret from authenticate header if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { // try to get form values context.TryGetFormCredentials(out clientId, out clientSecret); } // Validate clientid and clientsecret. You can omit validating client secret if none is provided in your request (as in sample client request above) var validClient = true;//!string.IsNullOrWhiteSpace(clientId); if (validClient) { // Need to make the client_id available for later security checks context.OwinContext.Set<string>("as:client_id", clientId); context.Validated(); } else { context.Rejected(); } return Task.FromResult(0); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { try { string clientId, clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret) || context.TryGetFormCredentials(out clientId, out clientSecret)) { if (Validator.ValidateClient(clientId, clientSecret)) { context.Validated(); } } else { context.SetError("Invalid credentials"); context.Rejected(); } } catch (Exception e) { context.SetError("Server error"); context.Rejected(); } }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; //first try to get the client details from the Authorization Basic header if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { //no details in the Authorization Header so try to find matching post values context.TryGetFormCredentials(out clientId, out clientSecret); } if (string.IsNullOrWhiteSpace(clientId) || string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("client_not_authorized", "invalid client details"); return Task.FromResult<object>(null); } var dataLayer = new RepoManager(new DataLayerDapper()).DataLayer; var audienceDto = dataLayer.GetAudience(clientId); if (audienceDto == null || !clientSecret.Equals(audienceDto.Secret)) { context.SetError("unauthorized_client", "unauthorized client"); return Task.FromResult<object>(null); } context.Validated(); return Task.FromResult<object>(null); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string AuthorizeSecretKey = context.Parameters["authorizeSecretKey"]; if (AuthorizeSecretKey != AValues.AuthorizeSecretKey) { context.SetError("invalid_clientId", string.Format("SecretKey '{0}' is not true.", AuthorizeSecretKey)); return Task.FromResult<object>(null); } string clientId = string.Empty; string clientSecret = string.Empty; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.Validated(); return Task.FromResult<object>(null); } UserViewModel user = RedisHelp.GetLoginUserCache(int.Parse(context.ClientId)); if (user == null) { context.SetError("invalid_clientId", string.Format("Client '{0}' is not registered in the system.", context.ClientId)); return Task.FromResult<object>(null); } context.Validated(); return Task.FromResult<object>(null); }
/// <summary> /// responsible for validating if the Resource server (audience) is already registered in our Authorization server by reading the client_id value from the request /// </summary> /// <param name="context"></param> /// <returns></returns> public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null && String.IsNullOrWhiteSpace(clientId)) { context.SetError("invalid_clientId", "client_Id is not set"); } else if (!context.HasError) { var audience = AudiencesStore.Instance.FindAudience(context.ClientId); if (audience == null) { context.SetError("invalid_clientId", String.Format("Client '{0}' is not registered in the system.", context.ClientId)); } else { context.OwinContext.Set("as:clientId", clientId); context.OwinContext.Set("as:clientAllowedOrigin", audience.AllowedOrigin); context.Validated(); } } return Task.FromResult<object>(null); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId = string.Empty; string clientSecret = string.Empty; string symmetricKeyAsBase64 = string.Empty; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_clientId", "client_Id is not set"); return Task.FromResult<object>(null); } var audience = AudiencesStore.FindAudience(context.ClientId); if (audience == null) { context.SetError("invalid_clientId", string.Format("Invalid client_id '{0}'", context.ClientId)); return Task.FromResult<object>(null); } context.Validated(); return Task.FromResult<object>(null); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { // validate client credentials // should be stored securely (salted, hashed, iterated) string id, secret; if (context.TryGetBasicCredentials(out id, out secret)) { var client = _dbContext .ApiClients .AsEnumerable() .SingleOrDefault(c => c.Id.ToString() == id && c.IsBlacklisted == false); if (client != null) { // need to make the client_id available for later security checks context.OwinContext.Set("as:client_id", client.Id.ToString()); //context.OwinContext.Set("as:client_name", client.Name); context.Validated(); return Task.FromResult<object>(null); } } context.Rejected(); return Task.FromResult<object>(null); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext ctx) { string clientId = string.Empty; string clientSecret = string.Empty; Client client = null; if(!ctx.TryGetBasicCredentials(out clientId,out clientSecret)) { ctx.TryGetFormCredentials(out clientId, out clientSecret); } if(ctx.ClientId == null) { ctx.SetError("No clientId specified ! "); return Task.FromResult<object>(null); } using(AuthRepository _repo = new AuthRepository()) { client = _repo.FindClient(clientId); } if(client == null) { ctx.SetError("clientId not found !"); return Task.FromResult<object>(null); } if (client.ApplicationType == ApplicationTypes.Native) { if (string.IsNullOrWhiteSpace(clientSecret)) { ctx.SetError("invalid_clientId", "Client secret should be sent."); return Task.FromResult<object>(null); } else { if (client.Secret != GetHash(clientSecret)) { ctx.SetError("invalid_clientId", "Client secret is invalid."); return Task.FromResult<object>(null); } } } if (!client.Active) { ctx.SetError("invalid_clientId", "Client is inactive."); return Task.FromResult<object>(null); } ctx.OwinContext.Set<string>("as:clientAllowedOrigin", client.AllowedOrigin); ctx.OwinContext.Set<string>("as:clientRefreshTokenLifeTime", client.RefreshTokenLifeTime.ToString()); ctx.Validated(); return Task.FromResult<object>(null); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (string.IsNullOrWhiteSpace(clientId)) { context.SetError("invalid_clientId", "client_id is not set."); await Task.FromResult<object>(null); return; } //TODO: get authClient (application) from db in future var authClient = new AuthClientService().Get(clientId); // auth client is null if (authClient == null) { context.SetError("invalid_clientId", "client_id is not valid."); await Task.FromResult<object>(null); return; } // authclient is enabled if (!authClient.Enabled) { context.SetError("invalid_clientId", "client_id is not valid."); await Task.FromResult<object>(null); return; } // make sure secret isn't null or empty if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("invalid_clientId", "Client secret should be sent."); await Task.FromResult<object>(null); return; } // make sure secret matches if (clientSecret != authClient.Base64Secret) { context.SetError("invalid_clientId", "Client secret is invalid."); await Task.FromResult<object>(null); return; } context.OwinContext.Set("authClient", authClient); context.Validated(); await Task.FromResult<object>(null); }
/// <summary> /// Called to validate that the origin of the request is a registered "client_id", and that the correct credentials for that client are /// present on the request. If the web application accepts Basic authentication credentials, /// context.TryGetBasicCredentials(out clientId, out clientSecret) may be called to acquire those values if present in the request header. If the web /// application accepts "client_id" and "client_secret" as form encoded POST parameters, /// context.TryGetFormCredentials(out clientId, out clientSecret) may be called to acquire those values if present in the request body. /// If context.Validated is not called the request will not proceed further. /// </summary> /// <param name="context">The context of the event carries information in and results out.</param> /// <returns> /// Task to enable asynchronous execution /// </returns> public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId = string.Empty; string clientSecret = string.Empty; AuthorizedClient authorizedClient = null; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_clientId", "ClientId should be sent."); return Task.FromResult<object>(null); } using (var repo = new AuthRepository()) authorizedClient = repo.FindAuthorizedClient(context.ClientId); if (authorizedClient == null) { context.SetError("invalid_clientId", string.Format("Client '{0}' is not registered in the system.", context.ClientId)); return Task.FromResult<object>(null); } if (authorizedClient.ApplicationType == ApplicationTypes.NativeConfidential) { if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("invalid_clientId", "Client secret should be sent."); return Task.FromResult<object>(null); } else { if (authorizedClient.Secret != HashHelper.GetHash(clientSecret)) { context.SetError("invalid_clientId", "Client secret is invalid."); return Task.FromResult<object>(null); } } } if (!authorizedClient.Active) { context.SetError("invalid_clientId", "Client is inactive."); return Task.FromResult<object>(null); } context.OwinContext.Set<string>("as:clientAllowedOrigin", authorizedClient.AllowedOrigin); context.OwinContext.Set<string>("as:clientRefreshTokenLifeTime", authorizedClient.RefreshTokenLifeTime.ToString()); context.Validated(); return Task.FromResult<object>(null); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; OAuthClient client = null; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_clientId", "ClientId should be sent."); return Task.FromResult<object>(null); } var clientService = mobSocialEngine.ActiveEngine.Resolve<IClientService>(); client = clientService.FirstOrDefault(x => x.Guid == clientId); if (client == null) { context.SetError("invalid_clientId", $"Client '{context.ClientId}' is not registered in the system."); return Task.FromResult<object>(null); } //native applications should also pass client secret if (client.ApplicationType == ApplicationType.NativeConfidential || client.ApplicationType == ApplicationType.NativeFullControl) { 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 is inactive."); return Task.FromResult<object>(null); } context.OwinContext.Set<string>("as:clientAllowedOrigin", client.AllowedOrigin); context.OwinContext.Set<string>("as:clientRefreshTokenLifeTime", client.RefreshTokenLifeTime.ToString()); context.Validated(); return Task.FromResult<object>(null); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string id, secret; if (context.TryGetBasicCredentials(out id, out secret)) { if (secret == "secret") { context.Validated(); } } }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if ((context.TryGetFormCredentials(out clientId, out clientSecret) || context.TryGetBasicCredentials(out clientId, out clientSecret)) && clientId == _clientId && clientSecret == _clientSecret) context.Validated(clientId); return Task.FromResult<object>(null); }
/// <summary> /// </summary> /// <param name="context"></param> /// <returns></returns> public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { var clientId = string.Empty; var clientSecret = string.Empty; AuthenticationClient client = null; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_clientId", "ClientId should be sent."); return Task.FromResult<object>(null); } client = AuthenticationClientService.Get(context.ClientId); if (client == null) { context.SetError("invalid_clientId", string.Format("Client '{0}' is not registered in the system.", context.ClientId)); return Task.FromResult<object>(null); } if (client.Applicationtype.Equals(ApplicationTypes.NativeConfidential)) { if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("invalid_clientId", "Client secret should be sent."); return Task.FromResult<object>(null); } if (client.Secret != HelperMethods.GetHash(clientSecret)) { context.SetError("invalid_clientId", "Client secret is invalid."); return Task.FromResult<object>(null); } } if (!client.Active) { context.SetError("invalid_clientId", "Client is inactive."); return Task.FromResult<object>(null); } context.OwinContext.Set("as:clientAllowedOrigin", client.Allowedorigin); context.OwinContext.Set("as:clientRefreshTokenLifeTime", client.Refreshtokenlifetime.ToString()); context.Validated(); return Task.FromResult<object>(null); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { //context.Validated(); //return; string clientId = string.Empty; string clientSecret = string.Empty; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_client", "Client credentials could not be retrieved through the Authorization header."); context.Rejected(); return; } try { if (clientId == "MyApp" && clientSecret == "MySecret") { ApplicationClient client = new ApplicationClient(); client.Id = "MyApp"; client.AllowedGrant = OAuthGrant.ResourceOwner; client.ClientSecretHash = new PasswordHasher().HashPassword("MySecret"); client.Name = "My App"; client.CreatedOn = DateTimeOffset.UtcNow; context.OwinContext.Set<ApplicationClient>("oauth:client", client); context.Validated(clientId); } else { // Client could not be validated. context.SetError("invalid_client", "Client credentials are invalid."); context.Rejected(); } } catch (Exception ex) { string errorMessage = ex.Message; context.SetError("server_error"); context.Rejected(); } return; }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { // validate client credentials // should be stored securely (salted, hashed, iterated) string id, secret; if (context.TryGetBasicCredentials(out id, out secret)) { if (secret == "secret") { context.Validated(); } } }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret) || context.TryGetFormCredentials(out clientId, out clientSecret)) { if (clientId == "ClientId1" && clientSecret == "ClientSecret1") { context.Validated(); } } }
public override async Task ValidateClientAuthentication( OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; context.OwinContext.Response.Headers["Access-Control-Allow-Origin"] = "*"; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (clientId != null) { UserManager dbContext = context.OwinContext.Get<UserManager>(); try { var client = await dbContext.FindAsync(clientId, clientSecret); if (client != null) { // Client has been verified. client.AuthGrant = OAuthGrant.ResourceOwner; context.OwinContext.Set<User>("oauth:client", client); context.Validated(clientId); } else { // Client could not be validated. context.Rejected(); context.SetError("invalid_client Client credentials are invalid."); } } catch { // Could not get the client through the IClientManager implementation. context.Rejected(); context.SetError("server_error"); } } else { //for my implementation if no client id is provided use only the user/pass context.Validated(clientId); } }
public override async Task ValidateClientAuthentication( OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret)) { UserManager<IdentityUser> userManager = context.OwinContext.GetUserManager<UserManager<IdentityUser>>(); OAuthDbContext dbContext = context.OwinContext.Get<OAuthDbContext>(); try { Client client = await dbContext .Clients .FirstOrDefaultAsync(clientEntity => clientEntity.Id == clientId); if (client != null && userManager.PasswordHasher.VerifyHashedPassword( client.ClientSecretHash, clientSecret) == PasswordVerificationResult.Success) { // Client has been verified. context.OwinContext.Set<Client>("oauth:client", client); context.Validated(clientId); } else { // Client could not be validated. context.SetError("invalid_client", "Client credentials are invalid."); context.Rejected(); } } catch { // Could not get the client through the IClientManager implementation. context.SetError("server_error"); context.Rejected(); } } else { // The client credentials could not be retrieved. context.SetError( "invalid_client", "Client credentials could not be retrieved through the Authorization header."); context.Rejected(); } }
/// <summary> /// Called to validate that the origin of the request is a registered "client_id", and that the correct credentials /// for that client are present on the request. If the web application accepts Basic authentication credentials, /// context.TryGetBasicCredentials(out clientId, out clientSecret) may be called to acquire those values if /// present in the request header. If the web application accepts "client_id" and "client_secret" as form encoded /// POST parameters, context.TryGetFormCredentials(out clientId, out clientSecret) may be called to /// acquire those values if present in the request body. If context.Validated is not called the request will not proceed further. /// </summary> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret)) { if (clientId == "CustomClientId" && clientSecret == "3BE3B807-0F78-442E-8368-6DB726A1BAAC") { context.OwinContext.Set<string>("as:client_id", clientId); context.Validated(); } } }
/// <summary> /// 验证请求中的客户端Id与客户端密钥的合法性 /// </summary> /// <param name="context"></param> /// <returns></returns> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId, clientSecret; context.TryGetBasicCredentials(out clientId, out clientSecret); //判断客户端Id与客户端密钥的合法性,不合法的拦截 bool validated = await _clientValidator.Validate(clientId, clientSecret); if (!validated) { context.SetError("invalid_client", "client is not valid."); return; } context.Validated(clientId); await base.ValidateClientAuthentication(context); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { // validate client credentials // should be stored securely (salted, hashed, iterated) string id, secret; if (context.TryGetBasicCredentials(out id, out secret)) { if (secret == "secret") { // need to make the client_id available for later security checks context.OwinContext.Set<string>("as:client_id", id); context.Validated(); } } }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret)) { if (clientId == "1234" && clientSecret == "5678") { context.Validated(clientId); } } return base.ValidateClientAuthentication(context); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId, clientSecret; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (clientId == null) { context.SetError("client_id_not_found", "ClientID should be sent."); return; } var clientApplication = await _userRepository.FindClientAsync(clientId); if (clientApplication == null) { context.SetError("invalid_client_id", string.Format("Client '{0}' is not registered in the system.", clientId)); return; } // Only native apps are supposed to contain a secret // Javascript apps cannot store the secret safely anyway if (clientApplication.ApplicationType == ApplicationType.NativeConfidential) { if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("client_secret_not_found", "Client secret should be sent."); return; } if (clientApplication.Secret != AuthorizationHelpers.GetHash(clientSecret)) { context.SetError("invalid_client_secret", "Client secret is invalid"); return; } } if (!clientApplication.IsActive) { context.SetError("client_inactive", "Client is inactive"); return; } context.OwinContext.Set("as:clientAllowedOrigin", clientApplication.AllowedOrigin); context.OwinContext.Set("as:clientRefreshTokenLifetime", clientApplication.RefreshTokenLifeTime.ToString()); context.Validated(); }
/// <summary> /// 验证 client 信息 /// </summary> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (clientId != "shoy" || clientSecret != "123456") { context.SetError("invalid_client", "client or clientSecret is not valid"); return; } context.Validated(); }
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientIdValue = string.Empty; string clientSecret = string.Empty; int clientId = 0; if (!context.TryGetBasicCredentials(out clientIdValue, out clientSecret)) { context.TryGetFormCredentials(out clientIdValue, out clientSecret); } if (string.IsNullOrWhiteSpace(clientIdValue)) { context.SetError("invalid_clientId", "Client id should be sent"); return; } if (!int.TryParse(clientIdValue, out clientId)) { context.SetError("invalid_clientId", "Client id is invalid"); return; } var authenticationClient = new AuthenticationClient(); var client = await authenticationClient.GetClient(new GetClientRequest { ClientId = clientId }); if (client == null || !client.IsSuccess || client.Client == null) { context.SetError("invalid_clientId", string.Format("Client '{0}' is not registered in the system", clientId)); return; } if (client.Client.ApplicationType == ApplicationType.NativeConfidential) { if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("invalid_clientId", "Client secret should be sent"); return; } else if (!PasswordHelper.VerifyPassword(clientSecret, client.Client.Secret)) { context.SetError("invalid_clientId", "Client secret is invalid"); return; } if (!client.Client.Active) { context.SetError("invalid_cliendId", "Client is inactive"); return; } } context.OwinContext.Set<string>("as:clientAllowedOrigin", client.Client.AllowedOrigin); context.OwinContext.Set<string>("as:clientRefreshTokenLifeTime", client.Client.RefreshTokenLifeTime.ToString()); context.Validated(); }
public Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret)) { // Validate the credentials here bool isValid = true; if (isValid) { context.Validated(); } } return Task.FromResult(0); }
/// <summary> /// 验证客户端 [Authorization Basic Base64(clientId:clientSecret)|Authorization: Basic 5zsd8ewF0MqapsWmDwFmQmeF0Mf2gJkW] /// </summary> /// <param name="context"></param> /// <returns></returns> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { //validate client credentials should be stored securely (salted, hashed, iterated) string clientId; string clientSecret; context.TryGetBasicCredentials(out clientId, out clientSecret); var clientValid = await _clientAuthorizationService.ValidateClientAuthorizationSecretAsync(clientId, clientSecret); if (!clientValid) { //context.Rejected(); context.SetError(AbpConstants.InvalidClient, AbpConstants.InvalidClientErrorDescription); return; } //need to make the client_id available for later security checks context.OwinContext.Set<string>("as:client_id", clientId); context.OwinContext.Set<string>("as:refresh_token_time", "36000"); context.Validated(clientId); }