我正在尝试将OAuth添加到我使用Spring框架开发的休息服务中。我正在使用基于注释的配置和spring-boot来使其运行。
我的项目中有以下课程:
@Configuration
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecuritySettings extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin").password("123").authorities("ROLE_USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated()
.and().httpBasic().and().csrf().disable();
}
}
我的授权服务器配置如下:
@Configuration
@EnableAuthorizationServer
public static class MyAuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory().withClient("web")
.authorizedGrantTypes("password")
.authorities("ROLE_CLIENT","ROLE_TRUSTED_CLIENT","ROLE_USER")
.scopes("read", "write")
.resourceIds(RESOURCE_ID);
}
}
当我向/oauth/token/
终点发出GET请求时,系统会要求我输入HTTP基本凭据。当我尝试使用admin
用户登录时,会记录以下内容
o.s.s.o.provider.endpoint.TokenEndpoint : Handling error: NoSuchClientException, No client with requested id: admin
输入用户名web
有效,但我不知道密码。将记录默认密码,但它也不起作用。
Using default security password: f23087f8-58ce-e3d-bc62-58bf0963e75c
那么这个密码是什么?我在哪里可以找到它?我该怎么设置它?
答案 0 :(得分:2)
您使用的API来自{{3}}。
客户端应用程序使用令牌端点来请求访问资源的令牌。浏览器最终用户不使用它。 OAuth2客户端通常被分配一个“客户端密钥”,可用于在端点进行身份验证,通常使用this builder class所述的基本身份验证。
因此,要回答您的具体问题,您可以在构建器API上使用“secret”方法,并使用该值进行身份验证作为客户端:
clients.inMemory().withClient("web")
.authorizedGrantTypes("password")
.secret("webclientsecret")
...
此外,“密码”授权意味着客户端请求令牌in the OAuth 2.0 spec,以确保这是您实际想要的。这与密码问题无关。
答案 1 :(得分:1)
这是OAuth访问令牌。它基于用户登录名和密码,用于访问受保护的资源。 URL“/ oauth / token”用于获取访问令牌而不是可用的请求令牌。此请求基于请求令牌密钥进行数字签名。
Oauth协议以这种方式使用此访问令牌:
Application-Consumer获取请求令牌。
用户在服务提供商的网站上重定向,并在那里授权请求令牌。 (如果通过Http basic进行授权,则应添加名称为“Authorization”的请求标头和值“Basic EncodeBase64(”name:password“)”,其中EncodeBase64是一个函数,“name”和“password”是用户名和用户密码。
应用程序 - 消费者在访问令牌上交换请求令牌。
Application-Consumer向服务的API发送授权请求。
您无法在OAuth 2 Developers Guide和Spring Social Reference
中找到其他信息我希望你能回答你的问题(或者接近它)。 =)