我需要将XML配置用于我的Spring Security实现的某些部分。目前我所关心的只是JWT授权,JWT被传递给我。使用Spring Security我确定用户是否被授权访问REST APIendpoint。我不能使用Java配置或@PreAuthorize注释。
仅供参考,当我最初使用@PreAuthorize或类似的方法时:. antMatcher("/学生/**"). access("#oauth2.hasScope('Scope: Admin')");
一切正常。当我被迫迁移到XML配置并使用安全:拦截-url方法时,这个问题出现了。
我遇到的错误是:
"消息":"无法计算表达式'#oauth2.hasScope('Scope: Admin')'"
例外情况是:
Java语言lang.IllegalArgumentException:无法计算表达式#oauth2。hasScope('Scope:Admin')”
位于组织。springframework。安全通道表示表达式实用程序。evaluateAsBoolean(ExpressionUtils.java:30)~[spring-security-core-5.0.3.RELEASE.jar:5.0.3.RELEASE]
。。。为了简洁起见,正在删除异常spew<原因:组织。springframework。表示spel。SpelEvaluationException:EL1011E:方法调用:尝试在空上下文对象上调用方法hasScope(java.lang.String)
XML配置:
<!-- only enable this when deving -->
<!-- <security:debug /> -->
<bean id="securityConfig"
class="com.wmay.config.SecurityConfig">
</bean>
<bean id="resourceServerConfig"
class="com.wmay.config.ResourceServerConfig">
</bean>
<bean id="methodSecurityConfig"
class="com.wmay.config.MethodSecurityConfig">
</bean>
<security:http pattern="/**" use-expressions="true" auto-config="true">
<security:intercept-url pattern="/students/**"
access="#oauth2.hasScope('Scope:Admin')"/>
</security:http>
代码段:
@Override
public void configure(HttpSecurity httpSecurity) throws Exception { log.info("Configuring HttpSecurity");
httpSecurity.csrf().disable(); httpSecurity.cors().configurationSource(corsConfigurationSource());
//@// @formatter:off
httpSecurity
.requestMatchers()
.and().authorizeRequests()
.antMatchers("/actuator/**").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll();
// @formatter:on
}
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
log.info(
"Enabling OAuth2 Method Expression Handler.");
return new OAuth2MethodSecurityExpressionHandler();
}
我想出来了。我需要在XML配置文件中添加更多条目。
<bean id="oauth2AuthenticationEntryPoint"
class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint" />
<oauth2:resource-server id="resourceServerFilter"
resource-id="${security.jwt.resource-ids}" token-services-ref="tokenServices"/>
<oauth2:web-expression-handler id="oauth2WebExpressionHandler" />
<security:http
pattern="/**"
entry-point-ref="oauth2AuthenticationEntryPoint"
authentication-manager-ref="authenticationManager"
use-expressions="true"
create-session="stateless">
<security:intercept-url pattern="/students/**"
access="#oauth2.hasScope('Scope:Admin')" />
<security:custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
<security:expression-handler ref="oauth2WebExpressionHandler" />
</security:http>
我使用spring-security-oauth2:2.3.3和spring-boot-starter-security:2.0.2构建了带有REST WS的Spring web app。但我无法设置哪些endpoint受到保护。 添加“--header”authorization:Basic{{base64 client id:password}}“也没有帮助。这怎么可能呢? 根据spring
我对spring security&oauth2相当陌生。作为学习的一部分,我试图设置一个OAuth2授权服务器,并保护RESTendpoint免受未经授权的访问。 代码 资源服务器 ProductController.java 未经授权API可以正常工作 如果我们只使用权限(@preauthorize(“hasauthorize('...')”))进行授权,它可以正常工作 作用域在到达oauth
我试图用Github Api做一个授权请求,传递用户名和密码。但它不起作用,我得到了401状态代码。 文件里有一部分说 这是我的密码:
我正在使用以下内容: Spring 4.2 Spring security 4.0.2 Spring oauth2 2.0.7 null 资源服务器配置似乎不限于/rest/**,而是覆盖了所有的安全配置。即对受保护的非OAuth资源的调用不受保护(即筛选器没有捕获它们并重定向到登录)。 配置(为了简单起见,我删除了一些内容):
问题内容: 我正在为iOS 8开发一个Swift代码。我正在尝试做一些涉及位置的事情,因此我在swift视图控制器文件中实现了以下内容: 但是,我似乎无法使此代码正常工作。它不会保存我对位置使用的偏好。它甚至不提示我允许访问位置。我尝试更新我的info.plist。但这不起作用。顺便说一句,如果我始终在模拟器的隐私设置中选择,那么如果我立即切换回该应用程序,它将起作用。有人可以帮忙吗?我确定那是问
在spotify api的授权步骤中,我完全迷失了方向 我需要提出一个类似于邮递员的请求: 具有包含client_id和client_secret(api 凭据)的标头 这些是根据授权流完成的(在他们的授权指南中的第四个-(隐式授权流(客户凭证流))本页最后一个:https://developer.spotify.com/documentation/general/guides/authoriza