Spring Security 使用Spring授权服务器认证第一方应用[副本]

htrmnn0y  于 2023-03-02  发布在  Spring
关注(0)|答案(1)|浏览(255)
    • 此问题在此处已有答案**:

what's the alternative to password grant now that it is deprecated? OAUTH 2.0(2个答案)
4天前关闭。
社区正在审查是否从昨天开始重新讨论这个问题。
我正在构建一个通过Spring Boot后端服务器(充当身份验证和资源服务器)进行身份验证的第一方移动应用程序,我计划使用Spring Authorization Server来处理通过用户名/密码以及其他OAuth提供程序(例如,使用Google登录)登录到移动应用程序的操作。
我在另一个项目中有一个类似的用例,使用Spring Security OAuth和client_credentials以及password授权类型通过用户名/密码进行身份验证。
在查看此特性矩阵时,Spring Authorization Server似乎不支持密码授予类型。
Confirmed here with multiple confused emoji reactions,而且我也很困惑:)
资源所有者密码授权类型似乎是第一方移动应用程序的一个有效用例。使用Spring授权服务器验证第一方移动应用程序的推荐方法是什么?
如果根据OAuth 2.1规范应该使用authorization_code授权,那么如何从本机移动应用程序提交用户名/密码,而不是使用Spring Authorization Server提供的表单登录?

@Bean
    SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests(authorize ->
                        authorize.anyRequest().authenticated()
                )
                .formLogin(withDefaults());
        return http.build();
    }
m4pnthwp

m4pnthwp1#

我一直在阅读评论,我会尝试解决这个问题。
是的,Spring授权服务器将不支持密码授予类型,因为它在oauth2 v2.1中已被弃用。
最大的原因是,正如rfc草案OAuth 2.0 Security Best Current Practice中指出的那样,该流容易受到访问令牌泄漏和访问令牌重放攻击
我在另一个项目中有一个类似的用例,使用Spring Security OAuth和client_credentials以及密码授权类型通过用户名/密码进行身份验证。
那么该应用程序可能容易受到这些类型的攻击,您一定要重新访问该应用程序并更改身份验证方法。
如何从原生移动的应用程序提交用户名/密码,而不是使用Spring Authorization Server提供的表单登录?
正如您在多个地方所读到的,建议使用Authorization Code Flow with Proof Key for Code Exchange (PKCE)
有几个教程解释了如何在移动的上使用这个流程,例如okta has a tutorial,它展示了如何为移动应用程序设置这个流程。
为了回应您的意见:
从移动的应用程序用户体验的Angular 来看,这并不理想
那么我在这里只能说太糟糕了。安全并不容易,如果世界上的每个人都是好人,我们就根本不必担心安全问题。但可悲的是,世界就是这样。互联网在进化,人在进化,恶意行为者也在进化,并找到新的方法来利用事物。
我建议您尝试向应用程序的用户解释,您想为了他们的用户体验而牺牲安全性,我敢打赌他们不会对这个决定感到高兴。
经验可以改变的人,MFA是一个痛苦的东西,在开始时,许多人,但现在是一个非常常用的东西,以确保应用程序和猜测什么,人们已经适应了它。
安全是困难的,非常困难,你必须明白这一点,这就是我们目前生活的世界。

相关问题