|
|
|
|
@ -16,7 +16,6 @@
@@ -16,7 +16,6 @@
|
|
|
|
|
package org.springframework.security.oauth2.core.endpoint; |
|
|
|
|
|
|
|
|
|
import org.springframework.security.oauth2.core.OAuth2AccessToken; |
|
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
@ -83,11 +82,18 @@ public final class OAuth2AccessTokenResponse {
@@ -83,11 +82,18 @@ public final class OAuth2AccessTokenResponse {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public OAuth2AccessTokenResponse build() { |
|
|
|
|
Assert.isTrue(this.expiresIn >= 0, "expiresIn must be a positive number"); |
|
|
|
|
Instant issuedAt = Instant.now(); |
|
|
|
|
|
|
|
|
|
// expires_in is RECOMMENDED, as per spec https://tools.ietf.org/html/rfc6749#section-5.1
|
|
|
|
|
// Therefore, expires_in may not be returned in the Access Token response which would result in the default value of 0.
|
|
|
|
|
// For these instances, default the expiresAt to +1 second from issuedAt time.
|
|
|
|
|
Instant expiresAt = this.expiresIn > 0 ? |
|
|
|
|
issuedAt.plusSeconds(this.expiresIn) : |
|
|
|
|
issuedAt.plusSeconds(1); |
|
|
|
|
|
|
|
|
|
OAuth2AccessTokenResponse accessTokenResponse = new OAuth2AccessTokenResponse(); |
|
|
|
|
accessTokenResponse.accessToken = new OAuth2AccessToken(this.tokenType, this.tokenValue, issuedAt, |
|
|
|
|
issuedAt.plusSeconds(this.expiresIn), this.scopes); |
|
|
|
|
accessTokenResponse.accessToken = new OAuth2AccessToken( |
|
|
|
|
this.tokenType, this.tokenValue, issuedAt, expiresAt, this.scopes); |
|
|
|
|
accessTokenResponse.additionalParameters = Collections.unmodifiableMap( |
|
|
|
|
CollectionUtils.isEmpty(this.additionalParameters) ? Collections.emptyMap() : this.additionalParameters); |
|
|
|
|
return accessTokenResponse; |
|
|
|
|
|