当前位置: 首页 > 知识库问答 >
问题:

Spring Security OAUTH2获取带有用户名/密码的令牌

白阳煦
2023-03-14

我的问题很“简单”。我不知道如何设置OAUTH2身份验证服务器以接受用户名/密码并返回令牌。

如果我使用:

卷曲:password@localhost:8081/oauth/token\?grant\u type=client\u credentials它返回令牌,但问题是它在DB中注册用户“curl”,所以。。。不太好。。。

如果我使用:

http://www.example.com:8081/oauth/authorize?client_id=web

范围改为:批准或拒绝”

我可以将这两者结合起来,创建一个简单的请求,返回令牌吗?我想将它用于angularjs前端,在Spring Boot和Jersey中使用RESTful WS。

我应该使用这个方案吗https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql

使用此配置-

如何为该方案设置一个用户?只需使用用户名和密码进行基本登录。

OauthConfiguration

@Configuration
@EnableAuthorizationServer
public class OAuthConfiguration extends AuthorizationServerConfigurerAdapter
{

@Autowired
private DataSource dataSource;

@Bean
public TokenStore tokenStore()
{
    return new JdbcTokenStore(dataSource);
}

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception
{
    endpoints.tokenStore(tokenStore());
}

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception
{
    // @formatter:off
    clients.inMemory()
            .withClient("curl")
            .authorities("USER")
            .resourceIds("reee")
            .scopes("read", "write")
            .authorizedGrantTypes("client_credentials")
            .secret("password")
            .and()
            .withClient("web")
            .redirectUris("http://github.com/techdev-solutions/")
            .resourceIds("reee")
            .scopes("read")
            .authorizedGrantTypes("implicit");
    // @formatter:on
}
}

安全配置

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter
{
@Autowired
private DataSource dataSource;

@Override
protected void configure(HttpSecurity http) throws Exception
{
    http.authorizeRequests().antMatchers("/**").authenticated()
            .and().httpBasic().realmName("OAuth Server");
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
    PasswordEncoder encoder = new BCryptPasswordEncoder();

    auth.userDetailsService(userDetailsService()).passwordEncoder(encoder);
    auth.jdbcAuthentication().dataSource(dataSource);
}

@Bean
public UserDetailsService userDetailsService()
{
    return new CustomUserDetailsService(dataSource);
}
}

共有1个答案

吴修洁
2023-03-14

我认为我们有类似的问题,因为我已经打开了一个q

您可以通过在请求头中添加用户名和密码来避免用户名和密码框http://localhost:8081/oauth/authorize?client_id=web

 类似资料:
  • 我有一个关于Keycloak和获取访问令牌的问题。 我们的设置如下:·用户在Keycloak中创建和维护。资源、策略和权限也在Keycloak中维护 >我们如何通过只知道用户名来为用户获取访问令牌? >有没有为这样的用户获取访问令牌的解决方案?

  • 我可以访问预配置的Windows XP 32位工作站。它在防火墙下,要离开它,它使用超文本传输协议代理服务器。要获取代理设置,我需要主机、端口、用户名和密码。 超文本传输协议://用户名:密码@服务器:端口 我能够找到代理url和端口(来自PAC-自动配置文件),但我不知道如何获取用户名/密码。有没有办法以某种方式读取它?至少用户名?我可能会获得管理员权限。 你知道有什么工具可以帮助你吗? 我只找

  • 我正在试着制作一个定制的发射器,但我不知道如何使用命令行来启动minecraft。我看到了这个问题:从命令行启动Minecraft-使用名称和密码作为前缀。但是答案根本不起作用,所以有人能告诉我如何使用以用户名和密码为前缀的命令行启动minecraft吗

  • 我将jenkins安装到windows 10。当我访问http://localhost:8080/,我必须输入用户名和密码。 但我不会像截图显示的那样显示秘密文件夹: 在包含jenkins.war的路径文件夹中运行时,我得到了这个异常 你能帮我解决那个问题吗?。 如有任何建议,将不胜感激。提前谢谢。

  • 问题内容: 我丢失了MySQL用户名和密码。我如何找回它? 问题答案: 停止MySQL进程。 使用–skip-grant-tables选项启动MySQL进程。 使用-u root选项启动MySQL控制台客户端。 列出所有用户; 重设密码; 但 不要忘记 ,以 停止MySQL进程 正常启动MySQL进程(即不使用–skip-grant-tables选项) 完成后。否则,数据库的安全性可能会受到威胁。

  • 这样,把pdf文件复制给别人就会迫使“复印机”说出他的用户名和密码…… 编辑:密码是打开文件而不是编辑或打印它,我希望用户能够突出显示文本和添加他们自己的注释