Dalam pembangunan Java API, pengesahan merupakan isu yang tidak dapat dielakkan. OAuth2 ialah kaedah pengesahan popular yang melindungi sumber API dengan memberikan akses. Artikel ini akan memperkenalkan cara menggunakan OAuth2 untuk pengesahan dalam pembangunan API Java.
Pengenalan kepada OAuth2
OAuth2 ialah standard terbuka untuk kebenaran yang membolehkan pengguna membenarkan aplikasi pihak ketiga mengakses sumber pelayan mereka tanpa perlu berkongsi bukti kelayakan mereka. Standard OAuth2 merangkumi peranan berikut:
- Pemilik Sumber: pemilik sumber, iaitu pengguna
- Pelayan Sumber: pelayan sumber, pelayan yang menyediakan sumber; 🎜> Pelanggan: Pelanggan, iaitu, aplikasi pihak ketiga;
- Pelayan Kebenaran: Pelayan kebenaran, digunakan untuk mengeluarkan token akses.
- Klien menghantar permintaan kebenaran ke Pelayan Kebenaran
- Pelayan Kebenaran meminta kebenaran daripada Pemilik Sumber;
- Selepas Pemilik Sumber membenarkan, Pelayan Kebenaran menghantar token akses kepada Pelanggan
- Klien menggunakan token akses untuk menghantar permintaan kepada Pelayan Sumber; Pelayan mengesahkan token akses dan menyediakan sumber.
- OAuth2 menyokong berbilang jenis kebenaran, termasuk mod kod kebenaran, mod kata laluan, mod klien, mod kebenaran tersirat, dsb. Dalam pembangunan API Java, mod kod kebenaran dan mod kata laluan biasanya digunakan.
Klien menghantar permintaan kebenaran kepada. Pelayan Kebenaran, Termasuk ID Klien dan URI hala tuju; Pelayan Kebenaran menghantar kod keizinan ke URI pengalihan ;
- Klien menggunakan kod keizinan untuk menghantar permintaan ke Pelayan Kebenaran, termasuk ID Pelanggan dan Rahsia Pelanggan
- Pelayan Kebenaran mengesahkan ID Pelanggan dan Rahsia Pelanggan, dan jika betul, mengeluarkan token akses kepada Pelanggan;
- Klien menggunakan token akses untuk menghantar permintaan kepada Pelayan Sumber.
- Dalam pembangunan API Java, anda boleh menggunakan rangka kerja Spring Security OAuth2 untuk melaksanakan pengesahan mod kod kebenaran.
- Pertama sekali, anda perlu menambah kebergantungan berikut dalam fail pom.xml:
<dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.4.RELEASE</version> </dependency>
<security:http pattern="/oauth/token" create-session="stateless" authentication-manager-ref="authenticationManager" xmlns="http://www.springframework.org/schema/security"> <security:intercept-url pattern="/oauth/token" access="isAuthenticated()" method="POST" /> <security:anonymous enabled="false" /> <security:http-basic entry-point-ref="clientAuthenticationEntryPoint" /> <security:custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" /> <security:access-denied-handler ref="oauthAccessDeniedHandler" /> </security:http> <security:http pattern="/api/**" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint" access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security"> <security:anonymous enabled="false" /> <security:intercept-url pattern="/api/**" access="ROLE_USER" /> <security:custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" /> <security:access-denied-handler ref="oauthAccessDeniedHandler" /> </security:http> <bean id="clientAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint"> <property name="realmName" value="spring-boot-oauth2" /> <property name="typeName" value="Basic" /> </bean> <bean id="oauthAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint"> <property name="realmName" value="spring-boot-oauth2" /> <property name="typeName" value="Bearer" /> </bean> <bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" /> <bean id="clientCredentialsTokenEndpointFilter" class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter"> <property name="authenticationManager" ref="authenticationManager" /> </bean> <bean id="resourceServerFilter" class="org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter"> <property name="authenticationManager" ref="authenticationManager" /> </bean> <bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased" xmlns="http://www.springframework.org/schema/beans"> <constructor-arg> <list> <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter" /> <bean class="org.springframework.security.access.vote.RoleVoter" /> <bean class="org.springframework.security.access.vote.AuthenticatedVoter" /> </list> </constructor-arg> </bean> <security:authentication-manager id="authenticationManager"> <security:authentication-provider user-service-ref="userDetailsService" /> </security:authentication-manager> <bean id="userDetailsService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource" ref="dataSource" /> </bean>Di mana , / oauth/token ialah laluan yang digunakan untuk mendapatkan token akses, dan /api/** ialah laluan yang memerlukan pengesahan. Apabila menggunakan OAuth2RestTemplate untuk menghantar permintaan, anda perlu mendapatkan token akses dahulu Kodnya adalah seperti berikut:
OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(client, context); AuthorizationCodeResourceDetails details = (AuthorizationCodeResourceDetails)client.getResource(); AuthorizationCodeAccessTokenProvider provider = new AuthorizationCodeAccessTokenProvider(); Authentication auth = new UsernamePasswordAuthenticationToken(username, password); AccessTokenRequest tokenRequest = provider.createAccessTokenRequest(details, auth); OAuth2AccessToken accessToken = provider.obtainAccessToken(details, tokenRequest); restTemplate.getOAuth2ClientContext().setAccessToken(accessToken);Di mana klien ialah objek jenis OAuth2ProtectedResourceDetails, yang mengandungi maklumat seperti Client. ID dan Rahsia Pelanggan. Mod Kata Laluan OAuth2Cryptomode ialah jenis kebenaran dalam OAuth2 yang sesuai untuk mempercayai pelanggan Ia mengandungi langkah berikut:
Klien menghantar permintaan kepada Pelayan Kebenaran. , termasuk ID Pelanggan, Rahsia Pelanggan dan nama pengguna dan kata laluan Pemilik Sumber
Pelayan Kebenaran mengesahkan ID Pelanggan, Rahsia Pelanggan dan nama pengguna dan kata laluan, dan jika betul, mengeluarkan token akses kepada Pelanggan
Klien menggunakan Token akses menghantar permintaan kepada Pelayan Sumber.
- Dalam pembangunan API Java, anda boleh menggunakan rangka kerja Spring Security OAuth2 untuk melaksanakan pengesahan mod kata laluan.
- Pertama sekali, anda perlu menambah kebergantungan berikut dalam fail pom.xml:
<dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.4.RELEASE</version> </dependency>
<security:http pattern="/oauth/token" create-session="stateless" authentication-manager-ref="authenticationManager" xmlns="http://www.springframework.org/schema/security"> <security:intercept-url pattern="/oauth/token" access="isAuthenticated()" method="POST" /> <security:anonymous enabled="false" /> <security:http-basic entry-point-ref="clientAuthenticationEntryPoint" /> <security:custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" /> <security:access-denied-handler ref="oauthAccessDeniedHandler" /> </security:http> <security:http pattern="/api/**" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint" access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security"> <security:anonymous enabled="false" /> <security:intercept-url pattern="/api/**" access="ROLE_USER" /> <security:custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" /> <security:access-denied-handler ref="oauthAccessDeniedHandler" /> </security:http> <bean id="clientAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint"> <property name="realmName" value="spring-boot-oauth2" /> <property name="typeName" value="Basic" /> </bean> <bean id="oauthAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint"> <property name="realmName" value="spring-boot-oauth2" /> <property name="typeName" value="Bearer" /> </bean> <bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" /> <bean id="clientCredentialsTokenEndpointFilter" class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter"> <property name="authenticationManager" ref="authenticationManager" /> </bean> <bean id="resourceServerFilter" class="org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter"> <property name="authenticationManager" ref="authenticationManager" /> </bean> <bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased" xmlns="http://www.springframework.org/schema/beans"> <constructor-arg> <list> <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter" /> <bean class="org.springframework.security.access.vote.RoleVoter" /> <bean class="org.springframework.security.access.vote.AuthenticatedVoter" /> </list> </constructor-arg> </bean> <security:authentication-manager id="authenticationManager"> <security:authentication-provider user-service-ref="userDetailsService" /> </security:authentication-manager> <bean id="userDetailsService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource" ref="dataSource" /> </bean>Di mana , / oauth/token ialah laluan yang digunakan untuk mendapatkan token akses, dan /api/** ialah laluan yang memerlukan pengesahan. Apabila menggunakan OAuth2RestTemplate untuk menghantar permintaan, anda perlu mendapatkan token akses dahulu Kodnya adalah seperti berikut:
OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(details, new DefaultOAuth2ClientContext()); restTemplate.getOAuth2ClientContext().setAccessToken(accesstoken);Antaranya, butiran adalah objek jenis ResourceOwnerPasswordResourceDetails, termasuk ID Pelanggan. , Rahsia Pelanggan, nama pengguna dan kata laluan, dsb. RingkasanMenggunakan OAuth2 untuk pengesahan dalam pembangunan API Java boleh melindungi keselamatan sumber API dan memudahkan pengguna membenarkan aplikasi pihak ketiga mengakses sumber pelayan mereka. Artikel ini memperkenalkan mod kod kebenaran dan mod kata laluan OAuth2 dan menyediakan kod sampel untuk melaksanakan pengesahan menggunakan rangka kerja Spring Security OAuth2. Semoga ia dapat membantu pembangun API Java.
Atas ialah kandungan terperinci Menggunakan pengesahan OAuth2 dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa