瀏覽代碼

Polish gh-1264

Joe Grandja 2 年之前
父節點
當前提交
1570a56911

+ 20 - 23
docs/modules/ROOT/pages/guides/how-to-custom-claims-authorities.adoc

@@ -1,13 +1,13 @@
 [[how-to-custom-claims-authorities]]
-= How-to: Add authorities as custom claims in JWT-based access tokens
+= How-to: Add authorities as custom claims in JWT access tokens
 :index-link: ../how-to.html
 :docs-dir: ..
 
 This guide demonstrates how to add resource owner authorities to a JWT access token.
 The term "authorities" may represent varying forms such as roles, permissions, or groups of the resource owner.
 
-To make resource owners' authorities available to the resource server, we add custom claims to an access token issued by Spring Authorization Server.
-The client using the issued token to access protected resources will then have information about the resource owner’s level of access, among other potential uses and benefits.
+To make resource owner's authorities available to the resource server, we add custom claims to the access token.
+When the client uses the access token to access a protected resource, the resource server will be able to obtain the information about the resource owner's level of access, among other potential uses and benefits.
 
 * xref:guides/how-to-custom-claims-authorities.adoc#custom-claims[Add custom claims to JWT access tokens]
 * xref:guides/how-to-custom-claims-authorities.adoc#custom-claims-authorities[Add authorities as custom claims to JWT access tokens]
@@ -15,40 +15,37 @@ The client using the issued token to access protected resources will then have i
 [[custom-claims]]
 == Add custom claims to JWT access tokens
 
-You may add your own custom claims to an access token using `OAuth2TokenCustomizer<JWTEncodingContext>` bean.
-Please note that this bean may only be defined once, and so care must be taken care of to ensure that you are customizing the appropriate token type — an access token in this case.
-If you are interested in customizing the identity token, see xref:guides/how-to-userinfo.adoc#customize-user-info-mapper[the UserInfo mapper guide for more information].
+You may add your own custom claims to an access token using an `OAuth2TokenCustomizer<JWTEncodingContext>` `@Bean`.
+Please note that this `@Bean` may only be defined once, and so care must be taken to ensure that you are customizing the appropriate token type — an access token in this case.
+If you are interested in customizing the ID Token, see the xref:guides/how-to-userinfo.adoc#customize-user-info-mapper[User Info Mapper guide] for more information.
 
 The following is an example of adding custom claims to an access token — in other words, every access token that is issued by the authorization server will have the custom claims populated.
 
-[[sample.customClaims]]
+[[sample.customclaims]]
 [source,java]
 ----
-include::{examples-dir}/main/java/sample/customClaims/CustomClaimsConfiguration.java[]
+include::{examples-dir}/main/java/sample/customclaims/CustomClaimsConfiguration.java[]
 ----
 
 [[custom-claims-authorities]]
 == Add authorities as custom claims to JWT access tokens
 
-To add authorities of the resource owner to a JWT-based access token, we can refer to the custom claim mapping method above
-and populate custom claims with the authorities of the `Principal`.
+To add authorities of the resource owner to a JWT access token, we can refer to the custom claim mapping method above and populate a custom claim with the authorities of the `Principal`.
 
-We define a sample user with a mix of authorities for demonstration purposes, and populate custom claims in an access token
-with those authorities.
+We define a sample user with a set of authorities for demonstration purposes, and populate a custom claim in the access token with those authorities.
 
-[[sample.customClaims.authorities]]
+[[sample.customclaims.authorities]]
 [source,java]
 ----
-include::{examples-dir}/main/java/sample/customClaims/authorities/CustomClaimsWithAuthoritiesConfiguration.java[]
+include::{examples-dir}/main/java/sample/customclaims/authorities/CustomClaimsWithAuthoritiesConfiguration.java[]
 ----
 
-<1> Define a sample user `user1` with an in-memory user details service.
-<2> Define a few roles for  `user1`.
-<3> Define `OAuth2TokenCustomizer<JwtEncodingContext>` `@Bean` that allows for customizing JWT token claims.
-<4> Check whether the JWT token is an access token.
-<5> From the encoding context, modify the claims of the access token.
-<6> Extract user roles from the `Principal` object. The role information for internal users is stored as a string prefixed with `ROLE_`, so we strip the prefix here.
-<7> Set custom claim `roles` to the set of roles collected from the previous step.
+<1> Define a sample user `user1` with an in-memory `UserDetailsService`.
+<2> Assign the roles for `user1`.
+<3> Define an `OAuth2TokenCustomizer<JwtEncodingContext>` `@Bean` that allows for customizing the JWT claims.
+<4> Check whether the JWT is an access token.
+<5> Access the default claims via the `JwtEncodingContext`.
+<6> Extract the roles from the `Principal` object. The role information is stored as a string prefixed with `ROLE_`, so we strip the prefix here.
+<7> Set the custom claim `roles` to the set of roles collected from the previous step.
 
-As a result of this customization, authorities information about the user will be included as a custom claim within the
-access token.
+As a result of this customization, authorities information about the user will be included as a custom claim in the access token.

+ 1 - 1
docs/modules/ROOT/pages/how-to.adoc

@@ -11,4 +11,4 @@
 * xref:guides/how-to-ext-grant-type.adoc[Implement an Extension Authorization Grant Type]
 * xref:guides/how-to-userinfo.adoc[Customize the OpenID Connect 1.0 UserInfo response]
 * xref:guides/how-to-jpa.adoc[Implement core services with JPA]
-* xref:guides/how-to-custom-claims-authorities.adoc[Add authorities as custom claims in JWT-based access tokens]
+* xref:guides/how-to-custom-claims-authorities.adoc[Add authorities as custom claims in JWT access tokens]

+ 16 - 1
docs/src/main/java/sample/customClaims/CustomClaimsConfiguration.java → docs/src/main/java/sample/customclaims/CustomClaimsConfiguration.java

@@ -1,4 +1,19 @@
-package sample.customClaims;
+/*
+ * Copyright 2020-2023 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package sample.customclaims;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;

+ 17 - 2
docs/src/main/java/sample/customClaims/authorities/CustomClaimsWithAuthoritiesConfiguration.java → docs/src/main/java/sample/customclaims/authorities/CustomClaimsWithAuthoritiesConfiguration.java

@@ -1,4 +1,19 @@
-package sample.customClaims.authorities;
+/*
+ * Copyright 2020-2023 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package sample.customclaims.authorities;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -22,7 +37,7 @@ public class CustomClaimsWithAuthoritiesConfiguration {
 		UserDetails user = User.withDefaultPasswordEncoder()
 				.username("user1") // <1>
 				.password("password")
-				.roles(new String[] { "user", "admin" }) // <2>
+				.roles("user", "admin") // <2>
 				.build();
 		return new InMemoryUserDetailsManager(user);
 	}