我正在尝试使用隐式、密码和授权流使用Spring OAuth 2设置一个项目。
当我使用相同的令牌endpoint进行隐式验证和其他两种验证时,出现了我的问题,密码和授权需要基本的身份验证来进行客户端验证,而隐式验证不验证客户端机密,我想使用更加密的登录/密码身份验证来进行用户授权。
因此,根据配置,一个或两个流可以工作。拥有两个endpoint似乎是最简单的解决方案,但我找不到如何实现这一点。
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
xmlns:sec="http://www.springframework.org/schema/security"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!--
<sec:http pattern="/external/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security" entry-point-ref="authenticationEntryPoint">
<sec:intercept-url pattern="/external/oauth/token" access="IS_AUTHENTICATED_FULLY" />
<sec:anonymous enabled="false" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
</sec:http>
-->
<sec:http pattern="/external/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security">
<sec:intercept-url pattern="/external/oauth/token" access="IS_AUTHENTICATED_FULLY" />
<sec:anonymous enabled="false" />
<sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
</sec:http>
<bean id="clientAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="realmName" value="blablabla" />
<property name="typeName" value="Basic" />
</bean>
<bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" />
<authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
<authentication-provider user-service-ref="clientDetailsUserService" />
</authentication-manager>
<bean id="clientDetailsUserService" class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
<constructor-arg ref="clientDetails" />
</bean>
<bean id="tokenStore" class="com.proton.oauthprovider.service.ProtOnTokenStore" />
<bean id="clientDetails" class="com.proton.oauthprovider.service.ProtOnClientDetailsService" />
<bean id="oauthCodeDetails" class="com.proton.oauthprovider.service.ProtOnAuthorizationCodeServices" />
<bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
<property name="tokenStore" ref="tokenStore" />
<property name="supportRefreshToken" value="true" />
<property name="clientDetailsService" ref="clientDetails" />
</bean>
<bean id="userApprovalHandler" class="com.proton.oauthprovider.service.OAuthUserApprovalHandler">
<property name="autoApproveClients">
<set>
<!-- <value>rest-client</value> -->
</set>
</property>
<property name="tokenServices" ref="tokenServices" />
</bean>
<oauth:authorization-server client-details-service-ref="clientDetails"
token-services-ref="tokenServices"
user-approval-handler-ref="userApprovalHandler" authorization-endpoint-url="/external/oauth/authorize"
user-approval-page="forward:/external/oauth/confirm_access"
error-page="forward:/external/oauth/error"
token-endpoint-url="/external/oauth/token" >
<oauth:authorization-code authorization-code-services-ref="oauthCodeDetails"/>
<oauth:implicit/>
<oauth:refresh-token />
<oauth:password authentication-manager-ref="authenticationManager"/>
</oauth:authorization-server>
<oauth:web-expression-handler id="oauthWebExpressionHandler" />
<!-- Override the default mappings for approval and error pages -->
<bean id="accessConfirmationController" class="com.proton.oauthprovider.controller.AccessConfirmationController">
<property name="clientDetailsService" ref="clientDetails" />
</bean>
</beans>
authenticationEntryPoint是登录表单入口点,而sparklr和tonr的自定义类或多或少都是相同的,只是使用DB backend存储客户端和令牌数据。
好吧,我把一切都弄错了,隐式流不使用令牌endpoint,它使用授权endpoint。所以之前的配置是可以的,我只需要将隐式流指向 /oauth/authorize/,它就像预期的那样工作。
致力于使用Spring实现Oau2。我想实现隐式工作流: 我的配置文件: 到目前为止,这是有效的。数据库中还会生成一个用户。 问题如下。当我尝试执行以下请求时: http://localhost:8080/oauth/token?grant_type=authorization_code 我总是会看到一个弹出窗口(身份验证),要求我输入用户名和密码。但无论我进入那里,我都不会经过。那么到底哪里出了
本文向大家介绍分组密码和流密码之间的区别,包括了分组密码和流密码之间的区别的使用技巧和注意事项,需要的朋友参考一下 分组和流密码都是加密方法,主要用于将纯文本直接转换为密文,并且属于对称键密码家族。 以下是块密码和流密码之间的重要区别。 序号 键 分组密码 流密码 1 定义 块密码是一种加密类型,通过一次获取其块来执行纯文本转换。 另一方面,“流密码”是一种加密类型,其中,通过一次获取一个字节的纯
我似乎无法理解为什么我从identityserver获取未经授权的客户端。我使用带有Angular 4 ui和asp.net核心web API的oidc客户端。我无法连接到identity server,因为每次它返回时,我的客户端都是未经授权的客户端。 这是已注册的客户端: 这是Angular中的身份验证服务: 最后,我像这样调用identityserver: 发送的请求如下:http://lo
我正在尝试使用Spring Security-5.2最新版本中的密码流对用户进行身份验证。 医生们似乎建议了如何做到这一点。 我执行请求,可以看到HTTP头中返回的访问令牌,但是没有填充SecurityContext,会话用户保持匿名。 有什么想法吗?
问题内容: 我下面有以下代码示例。你可以在其中输入的命令,即回显结果。但是,先读后。其他输出流不起作用? 为什么会这样或我做错了什么?我的最终目标是创建一个线程计划任务,该任务定期执行对/ bash的命令,因此必须一前一后工作,而不能停止工作。我也一直在经历错误的任何想法? 谢谢。 问题答案: 首先,我建议更换生产线 与线 ProcessBuilder是Java 5中的新增功能,它使运行外部进程更
在过去,我写过一些java程序,使用两个线程。第一个线程(生产者)从API(C库)读取数据,创建一个java对象,将该对象发送到另一个线程。C API正在传递一个事件流(无限)。线程使用LinkedBlockingQueue作为管道交换对象(put、poll)。第二个线程(使用者)正在处理对象。(我还发现,线程中的代码更易读。第一个线程处理C API的内容并生成适当的java对象,第二个线程不受C