我正在使用一个使用Oauth2并连接SqlServer的spring-boot应用程序。所以,当我点击看起来像这样的访问令牌URL时:
localhost:8081/oauth/token?client_secret=secret&client_id=web&grant_type=password&username=XXXX&password=XXXXXXX
我得到的回应是:
{
"error": "invalid_grant",
"error_description": "Bad credentials"
}
所以我觉得这是因为@Table注释和hibernate所具有的命名约定错误。我使用spring 1.5.9 and hibernate 5.0.12
。
我的Account.java文件是:
package com.oauth.oserver.entities;
import javax.persistence.*;
@Entity
@Table(name = "userinfo")
public class Account {
@Id
@GeneratedValue
private Long id;
@Column(name = "name")
private String username;
@Column(name = "password")
private String password;
public Account() {
}
public Account(String username, String password) {
this.username = username;
this.password = password;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
数据库包含名称为UserInfo
的表。
答案 0 :(得分:0)
从OAuth2 doc(https://tools.ietf.org/html/rfc6749),错误对应于:
invalid_grant 提供的授权许可(例如,授权 代码,资源所有者凭据)或刷新令牌 无效,已过期,已撤销,与重定向不匹配 授权请求中使用的URI,或者发给的URI 另一个客户。
所以请确保您输入了正确的补助金。如果是这样,请将@table名称更改为“UserInfo”而不是“userinfo”。希望有所帮助。 请查看表格命名策略:https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/cfg/ImprovedNamingStrategy.html