对不起,伙计们,这可能是一个愚蠢的问题。
但我需要在我的网络应用中实施一些额外的身份验证和授权逻辑,而且我还不清楚必须使用AuthenticationProvider
和AuthenticationEntryPoint
的位置。
在某些示例中,我发现AuthenticationEntryPoint
部分中省略了security:http
。
但是在某些情况下,AuthenticationProvider
也被省略(框架提供了一个默认实例?),只需要UserDetailsService
实现。
请你澄清一些基本概念吗?
答案 0 :(得分:8)
简短回答:
AuthenticationProvider
,以便将自定义身份验证方案集成到Spring Security中。 AccessDecisionVoter
,以便将自定义授权方案集成到Spring Security中。您可能还需要在某些特定情况下实现自定义AccessDecisionManager
,尽管捆绑的通常就足够了。请注意,与AuthenticationEntryPoint
不同,这两者都不是特定于Web的,这是Spring Security Web 的一部分,而不是Spring Security Core。 AuthenticationEntryPoint
的主要功能是允许框架从应用程序服务器向Web客户端发送某种“访问此资源,您必须首先进行身份验证”通知。大多数标准通知已在Spring Security Web中实现。例如:
BasicAuthenticationEntryPoint
:这与基本身份验证一起使用。 “通知”是HTTP 401响应。LoginUrlAuthenticationEntryPoint
:典型的“重定向登录页面”行为。CasAuthenticationEntryPoint
:与前者类似,重定向到企业级登录页面,通过CAS执行SSO。Http403ForbiddenEntryPoint
:通知只是一个HTTP 403响应。当您使用预身份验证(例如客户端X.509证书)并且用户凭据不提供访问权限时,这非常有用。如您所见,除非您所要求的行为过于具体,否则您不需要提供自己的AuthenticationEntryPoint
实施。