私はWebプロジェクトで2つの要素の認証を実装しています。私たちは認証と認可のためにSHIROを使用しています。 ユーザーがログインすると(SecurityUtils.getSubject()。login(subjectToken);) ユーザーは任意のページを開くことができます。 認証を完了するために、携帯電話で送信されたPINをユーザーに尋ねます。ログイン後の次のページで、ユーザーがPINを入力せず、URLを書き込んでホームページを直接開くと、PIN検証をバイパスできます。 roleRedirectとauthenticationRedirectを確認しましたが、リクエストはこれらのフィルタには含まれていません。 誰でもSHIROを使用して2つの要素を実装する正しい方法は何か教えてください。SHIROを使用した二要素認証
1
A
答えて
0
Shiroはまだ2つの要素の認証をサポートしていません。したがって、最初のパスワードログインと第2の要因の間の状態の追跡を処理する必要があります。あるいは、認可を使用してこれを管理できます。ユーザーが一度ログインすると、有効なパスワードを入力しますが、指定された権限 '2factor'がありません。この権限がない場合は、2番目の要素ページにリダイレクトできます。一度入力すると、ユーザーに「2facter」権限を与えることができます。
0
フィルタを作成して、セッションがotpverified変数を持っているかどうかを確認するか、私たちが一般的に行うようにします。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
// pass the request along the filter chain
//System.out.println(enabled);
if(enabled){
if(SecurityUtils.getSubject().getPrincipal()!=null){
if(request instanceof HttpServletRequest){
HttpSession session = ((HttpServletRequest) request).getSession();
LoggedInUser user = (LoggedInUser) session.getAttribute("userinfo");
String url = ((HttpServletRequest) request).getRequestURL().toString();
//System.out.println("url is "+ url +" subject is: "+ SecurityUtils.getSubject().isAuthenticated());
if(SecurityUtils.getSubject().isAuthenticated() && !url.contains("public") && !user.isOTPverified()){
if(user.getOTP() == null)
{
if(user.getTOTPSecret()!=null && user.getTOTPSecret().length()>0)
{
user.setOTP("TOTP");
}else
{
user.setOTP(OTPUtils.generateOTP());
new SendMail().send("[email protected]", "OTP for accessing ","OTP is "+ user.getOTP(), 1, new String[] {});
}
}
//user.setOTPverified(true);
((HttpServletRequest) request).getRequestDispatcher("OTPVerify.jsp").forward(request, response);
return;
}
}
}
}
chain.doFilter(request, response);
}
関連する問題
- 1. 二要素認証を使用するJenkins SSH
- 2. Apache Shiroを使用した認証のためのシンプルなPOC
- 3. zeppelinを使ったldapのShiro認証
- 4. GCEで二要素認証を使用して削除を防止する
- 5. Shiro、Multi Factor認証
- 6. Apache shiro + kerberos認証
- 7. tapestry shiroセキュリティ認証
- 8. 二要素認証を有効にしてgithubにリモートコミットをプッシュ
- 9. Shiroを使用してJDBCRealmを使用してユーザーを認証する
- 10. Apache Shiro認証のカスタマイズ
- 11. Google Cloud Plaformで二要素認証を有効にする
- 12. Cas(認証用)+ OpenLDAP(ユーザー名、パスワード+ロール、権限用)+ Apache Shiro(認証用)
- 13. Heroku二要素認証の複数のデバイス?
- 14. セッションIDを使用してApache Shiroとのセッションを認証します
- 15. Shiro認証にリモートロールを設定する
- 16. Apache ShiroでRest APIを認証
- 17. ZeppelinのShiroとのCAS認証
- 18. Djangoの二要素認証では、特定のビューで2FAが必要です
- 19. 複数の認証要素をweb.configで使用する
- 20. SSOと多要素認証
- 21. remote:ユーザー名またはパスワードが無効です。致命的:二要素認証を有効にした後、認証に失敗しました。
- 22. GRequestsを使用した認証または基本認証
- 23. 二組要素
- 24. OAUTH2認証要求ヘッダーを使用したロボットフレームワークのAPIテスト
- 25. WIFを使用したSAML認証要求の作成
- 26. バックエンドサーバーを使用したGoogle認証が必要スコープ
- 27. 複数の「ストア」を使用したWCFエンドポイント要求の認証
- 28. ASP.net Windows認証とActiveDirectoryMembershipProviderを使用したフォーム認証
- 29. SSLクライアント認証を使用したJettyのトラストストア認証
- 30. ネットワークHttpWebRequestを使用した認証とWebサイトの認証