Skip to content

Commit 52ecf47

Browse files
authored
Merge pull request #2708 from hongwei1/feature/BgConsentIssue
Feature/bg consent issue
2 parents 029aede + 7f46603 commit 52ecf47

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

obp-api/src/main/scala/code/api/util/APIUtil.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3082,7 +3082,13 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
30823082
val message = ErrorMessages.InvalidConsentIdUsage
30833083
Future { (fullBoxOrException(Empty ~> APIFailureNewStyle(message, 400, Some(cc.toLight))), Some(cc)) }
30843084
} else if (APIUtil.`hasConsent-ID`(reqHeaders)) { // Berlin Group's Consent
3085-
Consent.applyBerlinGroupRules(APIUtil.`getConsent-ID`(reqHeaders), cc.copy(consumer = consumerByCertificate))
3085+
// Choose consumer based on validation method configuration
3086+
val consumerForConsent = if (method == "CONSUMER_KEY_VALUE" && consumerByConsumerKey.isDefined) {
3087+
consumerByConsumerKey
3088+
} else {
3089+
consumerByCertificate
3090+
}
3091+
Consent.applyBerlinGroupRules(APIUtil.`getConsent-ID`(reqHeaders), cc.copy(consumer = consumerForConsent))
30863092
} else if (APIUtil.hasConsentJWT(reqHeaders)) { // Open Bank Project's Consent
30873093
val consentValue = APIUtil.getConsentJWT(reqHeaders)
30883094
Consent.getConsentJwtValueByConsentId(consentValue.getOrElse("")) match {

obp-api/src/main/scala/code/api/util/ConsentUtil.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,12 @@ object Consent extends MdcLoggable {
255255
if(requestConsumerId == "NONE" || consumerValidationMethodForConsent.isEmpty) {
256256
logger.warn(s"consumer_validation_method_for_consent is empty while request consumer_id=NONE - consent_id=${consent.jti}, aud=${consent.aud}")
257257
}
258+
// Get consumer keys for debugging
259+
val consentConsumerKey = Consumers.consumers.vend.getConsumerByConsumerId(consentConsumerId).map(_.key.get).getOrElse("Unknown")
260+
val requestConsumerKey = callContext.consumer.map(_.key.get).getOrElse("None")
261+
val detailedErrorMsg = s"${ErrorMessages.ConsentNotFound} Consumer mismatch: consent has consumer_id='$consentConsumerId' (consumer_key='$consentConsumerKey'), but current request has consumer_id='$requestConsumerId' (consumer_key='$requestConsumerKey')"
258262
logger.debug(s"ConsentNotFound: TPP/Consumer mismatch. Consent holder consumer_id=$consentConsumerId, Request consumer_id=$requestConsumerId, consent_id=${consent.jti}")
263+
logger.debug(s"ConsentNotFound: $detailedErrorMsg")
259264
ErrorUtil.apiFailureToBox(ErrorMessages.ConsentNotFound, 401)(Some(callContext))
260265
} else if (!verifyHmacSignedJwt(consentIdAsJwt, c)) { // verify signature
261266
Failure(ErrorMessages.ConsentVerificationIssue)

0 commit comments

Comments
 (0)