我有我的应用程序在本地工作正常,但当我试图连接到远程服务器我得到这个错误:CLIENT_PLUGIN_AUTH是必需的。
server.port=8081
spring.jpa.hibernate.ddl-auto=none
#local
#spring.datasource.url=jdbc:mysql://localhost:3306/dbtest
#spring.datasource.username=user
#spring.datasource.password=password
#remote
spring.datasource.url=jdbc:mysql://userssh:passwordssh@xxx.xxx.xxx.xxx:3306/dbtest
spring.datasource.username=userRemote
spring.datasource.password=passRemote
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
检查您是否存在版本问题。
Spring Boot项目创建者将下载最新的MySQL连接器(当前版本为8),因此,如果您运行的是较旧版本的MySQL,那么客户端插件验证错误可能由此产生。
您可以说服maven使用旧版本的连接器(如Satish的回复中所示),或者在Spring Boot之外添加连接器:
从pom中删除mysql连接器java依赖项。xml
为您的mysql下载mysql连接器java–通常是从您的发行版下载。
与:项目-
选择库选项卡。
并添加外部JAR:
/usr/share/java/mysql-connector-java-5.1.17.jar
或者类似的东西。
您需要为您的MySQL安装版本找到一个兼容的版本
默认值是
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
将其更改为某个版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
现在删除已安装的默认依赖项。“包资源管理器”
尝试让版本更接近您的MySql版本
对我来说,MySql版本是5.0.27,您可以从“MySql命令行客户端”中看到,我尝试的版本是5.1.46
还有一件事是添加到应用程序中。项目
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
但是,如果你是MySql依赖版本接近8
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
这不是必需的,因为它需要内部
现在要“清洁安装”你的应用程序,右键单击“运行方式”
现在要确认版本更改,请检查maven依赖关系,mysql-connector-java-5.1.46。jar(您提到的依赖项)
而且,如果仍然无法工作,请确保您已经检查了具有本地主机服务器的应用程序。然后检查/etc/drivers/hosts文件
# 127.0.0.1 localhost
我拿到了。
第一步。在远程mysql服务器上创建用户并授予所有权限。
第二步。更改数据源url
spring.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/dbtest
第三步。改变pom.xmlmysql
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
授权服务器为进行客户端身份验证的目的,为Web应用客户端创建客户端凭据。授权服务器被鼓励考虑比客户端密码更强的客户端身份验证手段。Web应用程序客户端必须确保客户端密码和其他客户端凭据的机密性。 授权不得向本地应用程序或基于用户代理的应用客户端颁发客户端密码或其他客户端凭据用于客户端验证目的。授权服务器可以颁发客户端密码或其他凭据给专门的设备上特定安装的本地应用程序客户端。 当客户端身份验证不可用
在向令牌端点发起请求时,机密客户端或其他被颁发客户端凭据的客户端必须如2.3节所述与授权服务器进行身份验证。客户端身份验证用于: 实施刷新令牌和授权码到它们被颁发给的客户端的绑定。当授权码在不安全通道上向重定向端点传输时,或者 当重定向URI没有被完全注册时,客户端身份验证是关键的。 通过禁用客户端或者改变其凭据从被入侵的客户端恢复,从而防止攻击者滥用被盗的刷新令牌。改变单套客户端凭据显然快于撤销
如果客户端类型是机密的,客户端和授权服务器建立适合于授权服务器的安全性要求的客户端身份验证方法。授权服务器可以接受符合其安全要求的任何形式的客户端身份验证。 机密客户端通常颁发(或建立)一组客户端凭据用于与授权服务器进行身份验证(例如,密码、公/私钥对)。授权服务器可以与公共客户端建立客户端身份验证方法。然而,授权服务器不能依靠公共客户端身份验证达到识别客户端的目的。 客户端在每次请求中不能使用一
有时需要对某些网络资源(如Servlet、JSP等)进行访问权限验证,也就是说,有访问权限的用户才能访问该网络资源。进行访问权限验证的方法很多,但通过HTTP响应消息头的WWW-Authenticate字段进行访问权限的验证应该是众多权限验证方法中比较简单的一个。 通过HTTP响应消息头的WWW-Authenticate字段可以使浏览器出现一个验证对话框,访问者需要在这个对话框中输入用户名和密码,
我不熟悉SSL和证书。我一直在做关于客户端证书认证的研究。我看过这个和wiki。 因此,如果我必须为我的B2B REST服务实现客户端证书身份验证解决方案,我应该执行以下操作 要求客户端生成自己的私钥,并为其公钥生成证书(CA 颁发?)。通过电子邮件或 USB 闪存盘发送该证书。 在服务器端将客户端的公共证书导入信任存储区并启用客户端身份验证 在握手期间,客户端会出示其证书并进行身份验证,因为服务
应如何管理它们? 一些更具体的问题: 根据定义,本机应用程序(实际上是公共客户端)不能安全地存储其凭据(client_id+secret)。是未注册的客户吗?如果我不能使用秘密来验证/验证它,我还应该做什么? 客户端注册≠endpoint注册:第一个是关于注册客户端凭据();第二个关于注册客户端重定向endpoint。重定向endpoint注册是否足以授予客户端的真实性? 客户端凭据授予是否使用相