RESTエンドポイントを介したSpringSecurity認証/承認

アレクサノイド

RESTfulWebサービスを使用するSpringBootアプリケーションで、SpringSocialおよびと一緒にSpringSecurityを構成しましたSpringSocialConfigurer

現在、認証/承認には2つの方法があります。ユーザー名/パスワードを使用する方法と、Twitterなどのソーシャルネットワークを使用する方法です。

Spring MVC RESTコントローラーで独自のRESTfulエンドポイントを介して認証/承認を実装するために、次のメソッドを追加しました。

@RequestMapping(value = "/login", method = RequestMethod.POST)
public Authentication login(@RequestBody LoginUserRequest userRequest) {
    Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(userRequest.getUsername(), userRequest.getPassword()));
    boolean isAuthenticated = isAuthenticated(authentication);
    if (isAuthenticated) {
        SecurityContextHolder.getContext().setAuthentication(authentication);
    }
    return authentication;
}

private boolean isAuthenticated(Authentication authentication) {
    return authentication != null && !(authentication instanceof AnonymousAuthenticationToken) && authentication.isAuthenticated();
}

しかし、/loginエンドポイントの呼び出しが成功した後、正確に何をクライアントに返す必要があるのか​​わかりません完全な認証オブジェクトを返すことは冗長だと思います。

認証が成功した場合、クライアントに何を返す必要がありますか?

このログイン方法を正しく実装する方法を教えてください。

また、RESTfullログインのUsernamePasswordAuthenticationToken場合は、Twitter経由のログインの場合はSocialAuthenticationToken、同じアプリケーションに異なるトークンを入れても大丈夫ですか?

Akhil bojedla

のメソッドをオーバーライドすることで、認証が成功したときに何を返すかを構成できます。 SimpleUrlAuthenticationSuccessHandler


public class CustomAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {

    public CustomAuthenticationSuccessHandler() {
        super();
        setRedirectStrategy(new NoRedirectStrategy());
    }

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException {

        super.onAuthenticationSuccess(request, response, authentication);
        ObjectMapper mapper = new ObjectMapper();

        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().print(mapper.writeValueAsString(objectToBereturned);
        response.getWriter().flush();
    }

    protected class NoRedirectStrategy implements RedirectStrategy {

        @Override
        public void sendRedirect(HttpServletRequest request, HttpServletResponse response, String url)
                throws IOException {
            // any redirect if required. leave the implementation black if not needed
        }

    }
}

さらに、障害応答を処理することもできます。


public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
            AuthenticationException exception) throws IOException, ServletException {
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

HTTPエンドポイントを介したユーザー認証

分類Dev

Oktaを使用したRESTエンドポイントとUIの認証

分類Dev

Spring OAuth:承認エンドポイントを認証するためのカスタムフォーム

分類Dev

RESTエンドポイントを介してBoxユーザーを管理するために使用できる認証

分類Dev

RESTエンドポイントを介してBoxユーザーを管理するために使用できる認証

分類Dev

AppEngineエンドポイントとJavaを使用したAndroidでの自作認証

分類Dev

シンプルなRESTエンドポイント認証

分類Dev

ユーザーが認証された後、エンドポイントに対してユーザーを承認する前に、認証オブジェクトの権限を更新します

分類Dev

Kong + JWTエンドポイントを承認から除外

分類Dev

承認サーバーエンドポイントを構成します

分類Dev

Spring Data Rest + SpringSecurityを使用したRESTエンドポイントのThymeleaf例外解決テンプレート

分類Dev

SpringSecurityインメモリ認証を使用した内部化

分類Dev

MicrosoftAzureの機能を介したアクチュエータエンドポイントの確認

分類Dev

エンドユーザー認証トークン(Firebase認証を使用)を確認してGoogle Cloud Runエンドポイントを呼び出す方法は?

分類Dev

C#承認エンドポイント(crv、x、y)からの値を使用してJWTトークンを検証します

分類Dev

JWTを使用して認証エンドポイントを実装する

分類Dev

基本認証エンドポイントを介してJSONWebトークンを作成しますか?ドロップウィザード

分類Dev

twitterrequest_tokenエンドポイントは常に「認証できませんでした」を返します

分類Dev

クライアントを介したRESTfulAPI認証

分類Dev

「認証資格情報が提供されませんでした」を取得するDRFAPIエンドポイント

分類Dev

Strongloop / loopback 4:RESTを介したエクスプローラーコンポーネントの認証を無効にする方法は?

分類Dev

Springの「保護された」アノテーションでエンドポイントを承認する

分類Dev

Rest API:クライアント認証とエンドユーザー認証

分類Dev

Azureから匿名APIエンドポイントを承認する

分類Dev

DjangoのREST認証でユーザーエンドポイントを削除する

分類Dev

Google CalendarAPIを介したイベントの作成-承認の問題

分類Dev

Spring Boot Stomp WebSocketエンドポイントを処理してユーザーを承認する方法

分類Dev

JQueryAjaxを介した認証トークンベアラーの送信-バックエンドは.NETCore WebApiです

分類Dev

/ tokenエンドポイントを使用して認証アクセストークンを取得します

Related 関連記事

  1. 1

    HTTPエンドポイントを介したユーザー認証

  2. 2

    Oktaを使用したRESTエンドポイントとUIの認証

  3. 3

    Spring OAuth:承認エンドポイントを認証するためのカスタムフォーム

  4. 4

    RESTエンドポイントを介してBoxユーザーを管理するために使用できる認証

  5. 5

    RESTエンドポイントを介してBoxユーザーを管理するために使用できる認証

  6. 6

    AppEngineエンドポイントとJavaを使用したAndroidでの自作認証

  7. 7

    シンプルなRESTエンドポイント認証

  8. 8

    ユーザーが認証された後、エンドポイントに対してユーザーを承認する前に、認証オブジェクトの権限を更新します

  9. 9

    Kong + JWTエンドポイントを承認から除外

  10. 10

    承認サーバーエンドポイントを構成します

  11. 11

    Spring Data Rest + SpringSecurityを使用したRESTエンドポイントのThymeleaf例外解決テンプレート

  12. 12

    SpringSecurityインメモリ認証を使用した内部化

  13. 13

    MicrosoftAzureの機能を介したアクチュエータエンドポイントの確認

  14. 14

    エンドユーザー認証トークン(Firebase認証を使用)を確認してGoogle Cloud Runエンドポイントを呼び出す方法は?

  15. 15

    C#承認エンドポイント(crv、x、y)からの値を使用してJWTトークンを検証します

  16. 16

    JWTを使用して認証エンドポイントを実装する

  17. 17

    基本認証エンドポイントを介してJSONWebトークンを作成しますか?ドロップウィザード

  18. 18

    twitterrequest_tokenエンドポイントは常に「認証できませんでした」を返します

  19. 19

    クライアントを介したRESTfulAPI認証

  20. 20

    「認証資格情報が提供されませんでした」を取得するDRFAPIエンドポイント

  21. 21

    Strongloop / loopback 4:RESTを介したエクスプローラーコンポーネントの認証を無効にする方法は?

  22. 22

    Springの「保護された」アノテーションでエンドポイントを承認する

  23. 23

    Rest API:クライアント認証とエンドユーザー認証

  24. 24

    Azureから匿名APIエンドポイントを承認する

  25. 25

    DjangoのREST認証でユーザーエンドポイントを削除する

  26. 26

    Google CalendarAPIを介したイベントの作成-承認の問題

  27. 27

    Spring Boot Stomp WebSocketエンドポイントを処理してユーザーを承認する方法

  28. 28

    JQueryAjaxを介した認証トークンベアラーの送信-バックエンドは.NETCore WebApiです

  29. 29

    / tokenエンドポイントを使用して認証アクセストークンを取得します

ホットタグ

アーカイブ