真的不可能使用默认模式的Spring Security与PostgreSQL,因为部分varchar_ignorecase不存在
不能被替换?
我只是在测试默认设置:
auth.jdbcAuthentication()
.dataSource(dataSource)
.withDefaultSchema();
下面是错误:
引起原因:
org.springframework.beans.factory.Bean定义存储异常:工厂方法[公共javax.servlet.过滤器org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain()抛出java.lang.异常]抛出异常;
嵌套异常是
org。springframework。jdbc。数据源。初始化。ScriptStatementFailedException:未能在资源类路径resource的第1行执行SQL脚本语句
[org/springframework/security/core/userdetails/jdbc/users.ddl]:创建表用户(username varchar_ignorecase(50)not null主键,password varchar_ignorecase(500)not null,enabled boolean not null);
嵌套异常是
org.postgresql.util.PSQLExcture: ERROR: type"varchar_ignorecase"不存在
PGSQL的架构:
模式。sql
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS authorities;
CREATE TABLE users
(
username VARCHAR(50) NOT NULL,
password VARCHAR(100) NOT NULL,
enabled INT NOT NULL DEFAULT 1,
PRIMARY KEY (username)
);
CREATE TABLE authorities
(
username VARCHAR(50) NOT NULL,
authority VARCHAR(50) NOT NULL,
FOREIGN KEY (username) REFERENCES users (username)
);
data.sql上的用户注入
INSERT INTO users (username, password, enabled)
values ('user','pass',1);
INSERT INTO authorities (username, authority)
values ('user', 'ROLE_USER');
感谢Mr.Q.我完全使用了你的MySQL模式,并将其适用于PGSQL。
没有必要添加DefaultSchema()。只需用正确的列名和外键约束定义schema.sql和data.sql。下面是MySQL(在Spring Boot中)的示例配置。
模式。sql
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS authorities;
CREATE TABLE users
(
username VARCHAR(50) NOT NULL,
password VARCHAR(100) NOT NULL,
enabled TINYINT NOT NULL DEFAULT 1,
PRIMARY KEY (username)
);
CREATE TABLE authorities
(
username VARCHAR(50) NOT NULL,
authority VARCHAR(50) NOT NULL,
FOREIGN KEY (username) REFERENCES users (username)
);
然后定义用户和权限(data.sql)
INSERT INTO users (username, password, enabled)
values ('user','pass',1);
INSERT INTO authorities (username, authority)
values ('user', 'ROLE_USER');
最后,定义身份验证机制
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.jdbcAuthentication()
.passwordEncoder(NoOpPasswordEncoder.getInstance())
.dataSource(dataSource);
}
由于默认模式不适合PostgreSQL,我需要创建自己的模式,并实现自己的用户和权限查询查询。
auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery(
"select username,password, enabled from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
我正在开发ASP NET核心Web API,对认证方式的选择感到困惑。我曾经应用默认的Asp Net身份验证,但最近我知道了JWT。因此,我几乎像本文中一样实现了身份验证:https://stormpath.com/blog/token-authentication-asp-net-core。但是我不能理解这个JWT的好处。通过简单的Asp Net身份认证,我不关心令牌存储等,我只需要用signI
LDAP的基础是什么?如果在配置期间没有给出任何基数。 我必须从基于web的应用程序验证/验证用户,并且我有java代码。 但是我需要为此建立基础(变量),我已经让另一个团队告诉我基础,他们说我们没有在LDAP上定制任何东西。LDAP的默认基数是什么?
我有一个Spring启动应用程序,它由Azure AD oAuth2保护。我使用JWT授权。在安全配置中 我还将一些东西保存在会话中。但我发现,如果用户已经通过身份验证,他们可以绕过JWT身份验证,因为spring boot将身份验证保存在会话中。如何禁用此行为并仅允许通过JWT进行授权。
我正在Spring Boot应用程序中学习Spring Security性,我试图了解默认情况下使用Spring Security性的身份验证方式。我知道Spring Security默认情况下使用基于表单的身份验证,但我使用基本身份验证对Postman进行了测试,结果正常。 我有一个非常简单的Spring Boot应用程序。 Rest控制器: 我在pom中添加了Spring Security依赖
尝试将Azure AD身份验证添加到具有. net核心2.1后端的Angular 7 webapp。 然而,我在请求过程中收到了CORS错误。 “访问位于的XMLHttpRequest”https://login.microsoftonline.com/.......“(重定向自”https://localhost:5001/api/auth/login“)起源”https://localhost
我试图在Rails中使用“omniauth-google-oauth2”gem。我已经将我的应用程序作为web应用程序注册到云控制台,并试图使其工作,但当我试图访问以下URL时:https://accounts.google.com/oauth2/auth?response_type=code&client_id=xxx.project.googleusercontent.com&redirect