/// <summary> /// 验证客户端身份 /// </summary> /// <param name="context"></param> /// <returns></returns> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId; string clientSecret; if (context.TryGetBasicCredentials(out clientId, out clientSecret) == false) { context.TryGetFormCredentials(out clientId, out clientSecret); } var loginWay = context.Parameters.Get("loginway"); if (string.IsNullOrEmpty(loginWay)) { context.SetError("invalid_loginway", "未收到LoginWay."); return; } if (context.ClientId == null) { context.SetError("invalid_clientId", "未收到ClientId."); return; } var client = await _clientPolicyServices.FindClientAsync(context.ClientId); if (client == null) { context.SetError("invalid_clientId", string.Format("客户端'{0}'未在系统中注册.", context.ClientId)); return; } if (client.ClientSecret != TokenHelper.BuildHashToken(clientSecret)) { context.SetError("invalid_client", "客户端密钥无效"); return; } if (!client.IsActive) { context.SetError("invalid_clientId", "客户端未被激活."); return; } context.OwinContext.Set <AppClientRecord>("jytOAuth2:client", client); context.OwinContext.Set <string>("AppLoginModel", loginWay); context.Validated(); }