spring - 结合OAuth2和http基本认证spring security
问题描述
我已经使用 spring boot 和 spring security 实现了 OAuth2。现在我有不同的 API 可用,我想为它使用不同的身份验证方法。例如,我想对 API 使用 OAuth2,/users/**
对 API 使用 Http Basic Authentication /admin/**
。
但是,OAuth2 不应该适用于 API /admin/**
,HTTP basic 也不应该适用于/users/**
API。
任何帮助都会很棒!
解决方案
在 Spring Security 中,您可以有多个过滤器链来处理不同的请求。因此,您可以有一个处理对 /users/** uri 的请求,该 uri 将具有基本身份验证过滤器,另一个处理对 /admin/** uri 的请求,它将具有 Oauth2 过滤器。要进行此设置,您需要 2 个 WebSecurityConfigurerAdapter 实例
一个用于 Oauth2
@Configuration
@Order(1)
public static class Oauth2ConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.mvcMatcher("/user/**")
......
还有一个基本的:
@Configuration
@Order(2)
public static class BasicConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.mvcMatcher("/admin/**")
......
本文更详细地解释它:https ://www.baeldung.com/spring-security-multiple-entry-points
此外,此代码与 /admin 的 Digest auth 和所有其他的 Basic 执行类似的操作。https://github.com/wlesniak/spring-security-authn-authz-course/tree/master/module_2/mod2_crypto_portfolio_digest
推荐阅读
- python - scipy.stats cdf 大于 1
- r - case_when 在多个条件下中断
- python-3.x - python3:如何将代码直接粘贴到调用函数的控制台中,而不必加载 .py 文件?
- cloud-foundry - PCF Config Server 定期刷新配置?
- python - 如何在列表末尾获取某些值,每隔一段时间获取这些值,并在 Python 中的原始列表中插入某些位置?
- flutter - 我使用flutter_modular,我需要动态创建自定义转换。我怎么能做到这一点?
- javascript - 使用 darge-d3 的可折叠力布局
- java - Java - 将一个元素添加到不可变列表
- postgresql - 如何根据查询结果退出 psql
- python - 使用 pytest 的 Python 项目使用的正确文件夹结构是什么?