1

我成功地将 google 添加为 tonr2 示例应用程序中的另一个身份验证器。但我坚持的是,删除应用程序的登录屏幕并使用谷歌作为应用程序的身份验证模式。

此外,每次我点击谷歌信息时,我总是被带到“接受”/“不,谢谢”页面,而不是记住我的批准(我一直登录同一个谷歌账户)

这是我修改后的 spring-servlet.xml

<sec:http access-denied-page="/login.jsp?authorization_error=true" >
        <sec:custom-filter ref="oauth2ClientFilter" after="EXCEPTION_TRANSLATION_FILTER" />
        <sec:intercept-url pattern="/google/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <sec:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

        <sec:form-login authentication-failure-url="/login.jsp?authentication_error=true"
            default-target-url="/index.jsp" login-page="/login.jsp"
            login-processing-url="/login.do" />
        <sec:logout logout-success-url="/index.jsp" logout-url="/logout.do" />
    </sec:http>

    <sec:authentication-manager >
        <sec:authentication-provider>
            <sec:user-service>
                <sec:user name="marissa" password="wombat" authorities="ROLE_USER" />
                <sec:user name="sam" password="kangaroo" authorities="ROLE_USER" />
            </sec:user-service>
        </sec:authentication-provider>
    </sec:authentication-manager>

    <!--apply the oauth client context -->
    <oauth:client id="oauth2ClientFilter" />

    <oauth:resource id="google" type="authorization_code"
        client-id="174058367013-sdyu2a9q0fek0smsqgdjjtss26tp83dt.apps.googleusercontent.com"
        client-secret="IBAAGEyTXmM0xijZ5AvvJ65x" authentication-scheme="query"
        access-token-uri="https://accounts.google.com/o/oauth2/token"
        user-authorization-uri="https://accounts.google.com/o/oauth2/auth"
        client-authentication-scheme="form"
        scope="https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email" />

    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean
                    class="org.springframework.security.oauth.examples.tonr.converter.AccessTokenRequestConverter" />
            </set>
        </property>
    </bean>

    <mvc:default-servlet-handler />

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean
                class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />
        </mvc:message-converters>
    </mvc:annotation-driven>

    <bean id="contentViewResolver"
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json" />
            </map>
        </property>
        <property name="defaultViews">
            <bean
                class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
        </property>
    </bean>

    <!--Basic application beans. -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <bean id="googleController"
        class="org.springframework.security.oauth.examples.tonr.mvc.GoogleController">
        <property name="googleRestTemplate">
            <oauth:rest-template resource="google">
                <property name="messageConverters">
                    <list>
                        <bean
                            class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                            <property name="supportedMediaTypes">
                                <list>
                                    <bean class="org.springframework.http.MediaType">
                                        <!--google sends its json as text/javascript for some reason -->
                                        <constructor-arg value="text" />
                                        <constructor-arg value="javascript" />
                                    </bean>
                                    <bean class="org.springframework.http.MediaType">
                                        <constructor-arg value="application" />
                                        <constructor-arg value="json" />
                                    </bean>
                                </list>
                            </property>
                        </bean>
                    </list>
                </property>
            </oauth:rest-template>
        </property>
    </bean>
4

0 回答 0