spring-boot - 如何让 Linkedin OAuth 在 Spring Boot 中工作

标签 spring-boot security spring-security oauth linkedin

需要帮助才有Login with LinkedinSpring boot 2.1.6.RELEASE使用 Spring OAuth2 的项目。 Java 版本是 11

Google 和 Github 非常简单,并且在同一个项目中工作。我在 Spring-Social 中尝试了几个示例代码,但由于不同的 Spring 引导版本而失败。

下面的 application.properties 不起作用(也尝试过 client-authentication-method=post ),并且在从linkedin 检索授权码后被重定向回来(授权码有效,我可以使用它从 postman 那里获取访​​问 token )。

spring.security.oauth2.client.registration.linkedin.provider=linkedin
spring.security.oauth2.client.registration.linkedin.client-name=Linkedin
spring.security.oauth2.client.registration.linkedin.client-id=******
spring.security.oauth2.client.registration.linkedin.client-secret=******
spring.security.oauth2.client.registration.linkedin.redirect-uri=*****
spring.security.oauth2.client.registration.linkedin.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.linkedin.client-authentication-method=form
spring.security.oauth2.client.registration.linkedin.scope=r_emailaddress,r_liteprofile
spring.security.oauth2.client.provider.linkedin.authorization-uri=https://www.linkedin.com/oauth/v2/authorization
spring.security.oauth2.client.provider.linkedin.token-uri=https://www.linkedin.com/oauth/v2/accessToken
spring.security.oauth2.client.provider.linkedin.user-info-uri=https://api.linkedin.com/v2/me
spring.security.oauth2.client.provider.linkedin.user-info-authentication-method=post

SecurityConfig 类(也试过没有 antMatchers ):
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("*linkedin*").permitAll()
                .anyRequest().authenticated()
                .and()
                .csrf().disable()
                .oauth2Login();
    }

没有报错,和后code查询参数与 state 一起返回给 Spring ,它被重定向回 Spring 登录。

谢谢

最佳答案

我的工作配置:

spring:
  security:
    oauth2:
      client:
        registration:
          linkedin:
            client-id: ????
            client-secret: ????
            scope:  r_liteprofile, r_emailaddress
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            client-name: LinkedIn
            client-authentication-method: post

        provider:
          linkedin:
            authorization-uri: https://www.linkedin.com/oauth/v2/authorization
            token-uri: https://www.linkedin.com/uas/oauth2/accessToken
            user-info-uri: https://api.linkedin.com/v2/me
            jwk-set-uri:
            user-name-attribute: id

最新 Spring :org.springframework.security:spring-security-oauth2-client:5.2.2.RELEASE

关于spring-boot - 如何让 Linkedin OAuth 在 Spring Boot 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760525/

相关文章:

java - SecurityContextHolder.getContext().getAuthentication() 返回 String

spring - 如何在 IntelliJ 中使用 gradle 添加 spring-security-dependency ?

spring-boot - 如何禁用 Spring Security 的登录屏幕?

Java-Spring 启动 : Access-Control- Allow-Origin not working

java - 如何在单个 Docker 容器中提供多模块 spring boot 应用程序?

security - 跨域登录 - 当用户从一个域转移到另一个域时如何自动登录

javascript - Socket.io 的新功能,如何防止 Socket.io 客户端脚本被黑客攻击

Java数据加密/解密

java - 类路径资源 [org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.class] 无法打开,因为它不存在

java - Jackson - 自定义反序列化器不会读取 JSON 中的所有字段