ホームページ  >  記事  >  バックエンド開発  >  Java バックエンド開発: Java Authentication and Authorization Service を使用した API 認証と認可

Java バックエンド開発: Java Authentication and Authorization Service を使用した API 認証と認可

WBOY
WBOYオリジナル
2023-06-17 10:38:171274ブラウズ

Java バックエンド開発は常にエンタープライズ アプリケーション開発の主流であり、実際の開発では、データとユーザーのセキュリティを確保するために API の認証と認可が必要になることがよくあります。 Java Authentication and Authorization Service (JAAS) は、Java が提供する ID 認証と認可を実装する方法です。

JAAS とは

JAAS は Java テクノロジーによって提供されるセキュリティ フレームワークであり、認証と認可を実装するための共通 A​​PI と SPI を提供します。 Java アプリケーションと Web アプリケーションは両方とも、JAAS を使用して安全な認証と認可を実装できます。

JAAS には、サブジェクト、認証、認可という 3 つの中心的な概念が含まれています。

サブジェクトはユーザーまたはサービスを指し、1 つ以上の ID (プリンシパル) と複数の適切なアクセス許可 (アクセス許可) を持ちます。 Subject は JAAS のコア クラスであり、アプリケーション内の任意のエンティティを表します。

認証とは、サブジェクトの身元を確認することを意味します。これは、Username や PasswordCredential などの一連の資格情報で構成されます。資格情報には、パスワード、デジタル証明書、指紋など、何でも構いません。
認可は、サブジェクトがリソースにアクセスしたり操作を実行したりすることを認可するプロセスを表します。権限とは、ファイルの読み取りやソケット接続の受け入れなど、Java 仮想マシンでキャプチャされる単一の操作を指します。

API 認証と認可に JAAS を使用する方法

まず、JAAS 実装モジュールを構成する必要があります。 JAAS は複数の実装モジュールをサポートしていますが、最も一般的に使用されるのはファイルベースの実装モジュールです。ファイルベースの JAAS 構成例を次に示します。

Sample {
  com.mycompany.security.SampleLoginModule required;
};

Sample は実装モジュールの名前、com.mycompany.security.SampleLoginModule は LoginModule インターフェイスを実装する Java クラス名、required は、このモジュールは、認証プロセスの実行中に使用する必要があります。

次に、Java では、LoginContext クラスを使用して認証と認可を実装する必要があります。コード例は次のとおりです。

LoginContext lc = new LoginContext("Sample", 
  new CallbackHandler() {
    public void handle(Callback[] callbacks) {
        // ...
        // 这里实现回调处理逻辑
        // ...
    }
});

try {
    lc.login();
    Subject subject = lc.getSubject();
    // 身份验证成功,subject中包含了身份和权限
} catch (LoginException le) {
    // 身份验证失败
}

上記のコードに示すように、まず LoginContext オブジェクトを作成し、実装モジュールとコールバック プロセッサをそれに渡します。コールバック ハンドラーでは、認証に必要なコールバックを処理できます。

次に、LoginContext の login メソッドを呼び出して、認証と認可を実行します。検証が成功すると、LoginContext から Subject オブジェクトを取得し、それを後続のリクエストで使用して API 権限を検証できます。

最後に、API で Subject オブジェクトを使用してユーザーの権限を確認する必要があります。例:

Subject subject = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (subject.isPermitted("read_data")) {
    // 允许访问数据
} else {
    // 拒绝访问数据
}

上記のコードでは、Spring Security フレームワークの SecurityContextHolder を使用して取得します。 Subject オブジェクトを取得し、isPermitted メソッドを使用して権限が付与されているかどうかを確認します。

結論

認証と認可に JAAS を使用することは、Java バックエンド開発における標準的なアプローチです。共通の API と SPI を提供し、開発者が API セキュリティを簡単に実装できるようにします。この記事が、API の認証と認可に JAAS を使用する方法を理解するのに役立つことを願っています。

以上がJava バックエンド開発: Java Authentication and Authorization Service を使用した API 認証と認可の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。