protected async Task <ActionResult <Api.OAuthClientSecretResponse> > Post(Api.OAuthClientSecretRequest party) { try { if (!await ModelState.TryValidateObjectAsync(party)) { return(BadRequest(ModelState)); } var oauthDownParty = await tenantService.GetAsync <TParty>(await DownParty.IdFormat(RouteBinding, party.PartyName)); var secret = new OAuthClientSecret(); await secretHashLogic.AddSecretHashAsync(secret, party.Secret); if (oauthDownParty.Client.Secrets == null) { oauthDownParty.Client.Secrets = new List <OAuthClientSecret>(); } oauthDownParty.Client.Secrets.Add(secret); await tenantService.UpdateAsync(oauthDownParty); return(Created(mapper.Map <Api.OAuthClientSecretResponse>(secret).Set(s => s.Name = new[] { oauthDownParty.Name, s.Name }.ToDotList()))); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.Conflict) { logger.Warning(ex, $"Create secret on client '{typeof(TParty).Name}' by name '{party.PartyName}'."); return(Conflict(typeof(TParty).Name, party.PartyName)); } throw; } }
private async Task <(string, OAuthClientSecret)> CreateSecretAsync() { var oauthClientSecret = new OAuthClientSecret(); var secret = RandomGenerator.Generate(32); await secretHashLogic.AddSecretHashAsync(oauthClientSecret, secret); return(secret, oauthClientSecret); }
protected async Task <ActionResult> Post(Api.OAuthClientSecretRequest secretRequest) { try { if (!await ModelState.TryValidateObjectAsync(secretRequest)) { return(BadRequest(ModelState)); } secretRequest.PartyName = secretRequest.PartyName?.ToLower(); var oauthDownParty = await tenantRepository.GetAsync <TParty>(await DownParty.IdFormatAsync(RouteBinding, secretRequest.PartyName)); foreach (var s in secretRequest.Secrets) { var secret = new OAuthClientSecret(); await secretHashLogic.AddSecretHashAsync(secret, s); if (oauthDownParty.Client.Secrets == null) { oauthDownParty.Client.Secrets = new List <OAuthClientSecret>(); } oauthDownParty.Client.Secrets.Add(secret); } secretRequest.Secrets = oauthDownParty.Client.Secrets.Select(s => s.Id).ToList(); if (!await ModelState.TryValidateObjectAsync(secretRequest)) { return(BadRequest(ModelState)); } await tenantRepository.UpdateAsync(oauthDownParty); return(Created(new Api.OAuthDownParty { Name = secretRequest.PartyName })); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.Conflict) { logger.Warning(ex, $"Conflict, Create secret on client '{typeof(TParty).Name}' by name '{secretRequest.PartyName}'."); return(Conflict(typeof(TParty).Name, secretRequest.PartyName)); } throw; } }
public async Task <IHttpActionResult> Login(LoginInfo loginInfo) { Logger.Info("{0}开始登陆", loginInfo.UserName); var result = await IdentityContract.Login(loginInfo, false); OperationResult createClientResult = new OperationResult(); OperationResult createClientSecretResult = new OperationResult(); if (result.Successed) { OAuthClientStore oAuthClientStore = ServiceProvider.GetService <OAuthClientStore>(); OAuthClientRefreshTokenStore oAuthClientRefreshTokenStore = ServiceProvider.GetService <OAuthClientRefreshTokenStore>(); OAuthClient oAuthClient = new OAuthClient(); OAuthClientInputDto clientDto = new OAuthClientInputDto() { Name = loginInfo.UserName, OAuthClientType = OAuthClientType.Application, Url = "http://localhost:13800/", LogoUrl = "http://localhost:13800/", RedirectUrl = "http://localhost:13800/" }; try { createClientResult = await oAuthClientStore.CreateClient(clientDto); } catch (Exception ex) { Logger.Error("CreateClient错误:" + ex.ToString()); } if (createClientResult.Successed) { oAuthClient = oAuthClientStore.GetOAuthClient(clientDto); OAuthClientSecretInputDto secretDto = new OAuthClientSecretInputDto() { Type = "Test Type", Remark = "Remark", ClientId = oAuthClient.Id, }; try { createClientSecretResult = await oAuthClientStore.CreateClientSecret(secretDto); } catch (Exception ex) { Logger.Error("CreateClientSecret错误:" + ex.ToString()); } if (createClientSecretResult.Successed) { OAuthClientSecret oAuthClientSecret = ClientSecretRepository.Entities.Where(x => x.Client.Id == oAuthClient.Id).FirstOrDefault(); ClientAndSecretData data = new ClientAndSecretData(); data.ClientId = oAuthClient.ClientId; data.ClientSecret = oAuthClientSecret.Value; result.Message = JsonHelper.ToJson(data); return(Json(new OperationResult(OperationResultType.Success, JsonHelper.ToJson(data), result.Data))); } else { return(Json(new OperationResult(OperationResultType.Error, "创建Client Secret失败!"))); } } else { return(Json(new OperationResult(OperationResultType.Error, "创建Client失败!"))); } } else { return(Json(result)); } }