Apache Shiro 身份验证自定义

Posted

技术标签:

【中文标题】Apache Shiro 身份验证自定义【英文标题】:Apache Shiro authentication customization 【发布时间】:2016-10-29 09:35:18 【问题描述】:

如何在 Apache Shiro 中自定义身份验证逻辑?在 Spring Security 中,我在 AuthenticationManager 的“authenticate()”方法中编写了我的自定义逻辑:

public Authentication authenticate(Authentication auth) ...

有没有办法在 Apache Shiro 中做同样的事情?

【问题讨论】:

【参考方案1】:

这里是 Shiro 的 authentication sequence 和 customizable realm authentication 的概述。

根据您想要做什么,您自己实现的 CredentialsMatcher 可能是您正在寻找的钩子?关于您需要自定义哪些部分的详细答案实际上取决于您的实际身份验证场景。

【讨论】:

感谢您的回复!我有一个 Web 应用程序,登录 url:/ls?action=login 我读过我必须在 SecurityUtils.getSubject() 对象上调用 login() 方法。我不明白如何将用户名和密码传递给 login() 方法。我应该在 Servlet 中调用这个 login() 方法,然后重定向到一个安全的位置吗? 如果您只想使用用户名/密码调用login() 方法,只需构造一个new UsernamePasswordToken(username, password) 并将其作为参数传递给login(),如here 所述 这就是我不知道该怎么做。如何覆盖 .login() 方法?实际上我想在 .login() 方法中实现我自己的逻辑。我读到了领域——但我不确定选择哪个领域。 您是否查看过ActiveDirectoryRealmCasRealmJdbcRealmJndiLdapRealmPropertiesRealmSimpleAccountRealmTextConfigurationRealm你想做什么? 感谢@greenSocksRock。是的,领域完成了这项工作:)

以上是关于Apache Shiro 身份验证自定义的主要内容,如果未能解决你的问题,请参考以下文章

需要重写或实现哪些类或方法才能仅自定义 Shiro 的身份验证逻辑?

Apache shiro + kerberos 身份验证

使用 Facebook OAuth 进行 Apache Shiro 身份验证

Shiro又爆高危漏洞,Apache Shiro身份验证绕过漏洞安全风险通告

Apache Shiro - 使用 cn 以外的属性进行身份验证?

如何使用带有 LDAP 身份验证的 Apache Shiro 添加角色授权