diff --git a/CHANGES.ja.md b/CHANGES.ja.md index cc1bfc9e0..804ae1a30 100644 --- a/CHANGES.ja.md +++ b/CHANGES.ja.md @@ -1,6 +1,14 @@ 変更点 ====== +4.48 (未リリース) +----------------- + +- `Service` クラス + * `isIdTokenDroppedOnIssueWithoutOpenid()` メソッドを追加。 + * `setIdTokenDroppedOnIssueWithoutOpenid(boolean)` メソッドを追加。 + + 4.47 (2026 年 07 月 09 日) ----------------- diff --git a/CHANGES.md b/CHANGES.md index 3f05fed0b..d438c9d2d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,14 @@ CHANGES ======= +4.48 (Unreleased) +----------------- + +- `Service` class + * Added the `isIdTokenDroppedOnIssueWithoutOpenid()` method. + * Added the `setIdTokenDroppedOnIssueWithoutOpenid(boolean)` method. + + 4.47 (2026-07-09) ----------------- diff --git a/src/main/java/com/authlete/common/dto/Service.java b/src/main/java/com/authlete/common/dto/Service.java index 5837ec016..1c75742c7 100644 --- a/src/main/java/com/authlete/common/dto/Service.java +++ b/src/main/java/com/authlete/common/dto/Service.java @@ -330,7 +330,7 @@ */ public class Service implements Serializable { - private static final long serialVersionUID = 93L; + private static final long serialVersionUID = 94L; /* @@ -2103,6 +2103,18 @@ public class Service implements Serializable private boolean backchannelLogoutSessionSupported; + /** + * The flag indicating whether to refrain from issuing an ID token when the + * {@code openid} scope has been removed from the scopes to be granted by + * the {@code scopes} request parameter of the + * {@code /auth/authorization/issue} API. + * + * @since 4.48 + * @since Authlete 3.0.36 + */ + private boolean idTokenDroppedOnIssueWithoutOpenid; + + /** * Get the service number. * @@ -13965,4 +13977,70 @@ public Service setBackchannelLogoutSessionSupported(boolean supported) return this; } + + + /** + * Get the flag indicating whether to refrain from issuing an ID token when + * the {@code openid} scope has been removed from the scopes to be granted + * by the {@code scopes} request parameter of the + * {@code /auth/authorization/issue} API. + * + *

+ * The {@code scopes} request parameter of the + * {@code /auth/authorization/issue} API can narrow down the scopes that + * were requested by the original authorization request. When the + * {@code openid} scope is removed in this way, the {@code scope} of the + * issued access token no longer contains {@code openid}, but, for + * historical reasons, an ID token is issued nevertheless. + *

+ * + *

+ * When this flag is {@code true}, no ID token is issued in that case, so + * that ID token issuance follows the granted {@code openid} scope. Flows + * whose {@code response_type} contains {@code id_token} are not affected, + * because the response type itself requires an ID token. + *

+ * + * @return + * {@code true} if no ID token is issued when the {@code openid} + * scope has been removed by the {@code scopes} request parameter + * of the {@code /auth/authorization/issue} API. + * + * @since 4.48 + * @since Authlete 3.0.36 + */ + public boolean isIdTokenDroppedOnIssueWithoutOpenid() + { + return idTokenDroppedOnIssueWithoutOpenid; + } + + + /** + * Set the flag indicating whether to refrain from issuing an ID token when + * the {@code openid} scope has been removed from the scopes to be granted + * by the {@code scopes} request parameter of the + * {@code /auth/authorization/issue} API. + * + *

+ * See the description of {@link #isIdTokenDroppedOnIssueWithoutOpenid()} + * for details. + *

+ * + * @param dropped + * {@code true} to refrain from issuing an ID token when the + * {@code openid} scope has been removed by the {@code scopes} + * request parameter of the {@code /auth/authorization/issue} API. + * + * @return + * {@code this} object. + * + * @since 4.48 + * @since Authlete 3.0.36 + */ + public Service setIdTokenDroppedOnIssueWithoutOpenid(boolean dropped) + { + this.idTokenDroppedOnIssueWithoutOpenid = dropped; + + return this; + } }