社交登录与Spring安全性没有建立与Provider API的连接

时间:2017-02-20 10:01:06

标签: java spring spring-security spring-social

我正在尝试使用spring security和Oauth 2身份验证实现社交登录。提供者(Linkedin)和我的应用程序之间的Auth舞没有发生。由于这个原因,我的连接对象返回空连接。 请找到更多详情

JDK版本 - JDK 1.6_37
   春季版 - 春季3.2.3.RELEASE
   Spring Security Version-3.2.3.RELEASE

pom.xml dependancies

     <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
     <dependency>
        <groupId>org.brickred</groupId>
        <artifactId>socialauth-spring</artifactId>
        <version>2.6</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>4.3.5</version>
    </dependency>
    <!-- spring FB social media connector -->
    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-facebook</artifactId>
        <version>2.0.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-twitter</artifactId>
        <version>1.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-linkedin</artifactId>
        <version>1.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.external</groupId>
        <artifactId>spring-social-instagram</artifactId>
        <version>1.0.0</version>
    </dependency>

我有一个连接控制器。当我点击前端的链接时,我直接重定向到连接控制。没有建立与提供商的任何连接。

@Autowired
    public IepSocialConnectCtr(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
        this.connectionRepository = connectionRepository;
    }
    @PostConstruct
    public void initController() {
        super.setSessionStrategy(sessionStrategy);
        super.setApplicationUrl(environment.getProperty("site.url"));
    }
    @Override
    public String connectionStatus(@PathVariable
                                   String providerId, NativeWebRequest nativeWebRequest, Model model) {
        HttpServletRequest request = (HttpServletRequest) nativeWebRequest.getNativeRequest();
        HttpServletResponse response = (HttpServletResponse) nativeWebRequest.getNativeResponse();
        String lang = LocaleContextHolder.getLocale().getLanguage();
        setNoCache(nativeWebRequest);
        processFlash(nativeWebRequest, model);
        Map<String, List<Connection<?>>> connections = connectionRepository.findAllConnections();
        if (connections.isEmpty()) {
            System.out.println("Connection is empty");
            return "redirect:/"+ lang+"/";
        }
        return  "redirect:/"+ lang+"/";
    }

我有一个带有客户端ID和密码的属性文件,它为Linkedin创建连接工厂并将其分配给ConnectionFactoryLocator对象

在上面的代码段中,connectionRepository.findAllConnections()返回空连接。

有人可以解释一下应用程序如何与Spring社交中的提供程序(详细信息中的连接流程)进行通信以解决此问题。

1 个答案:

答案 0 :(得分:0)

通过使用您的客户端密钥,只有您的应用程序与提供商进行通信。您的应用程序未与提供商通信的原因是,您可能没有正确配置您的ID和密码。我不知道关于linkedin但是在连接时有了facebook,我们必须让我们的应用程序直播,这是最重要的事情和更多的事情要做。 我建议您正确配置您的密钥。