mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 13:07:02 +00:00
Merge pull request #2528 from constantine2nd/develop
consumer_id: null in consents info and getMyConsents endpoints
This commit is contained in:
commit
72bb7ca04b
@ -1131,7 +1131,7 @@ default_auth_context_update_request_key=CUSTOMER_NUMBER
|
||||
|
||||
# Check presence of the mandatory headers
|
||||
#berlin_group_mandatory_headers = Content-Type,Date,Digest,PSU-Device-ID,PSU-Device-Name,PSU-IP-Address,Signature,TPP-Signature-Certificate,X-Request-ID
|
||||
#berlin_group_mandatory_header_consent = TPP-Redirect-URL
|
||||
#berlin_group_mandatory_header_consent = TPP-Redirect-URI
|
||||
|
||||
## Berlin Group Create Consent Frequency per Day Upper Limit
|
||||
#berlin_group_frequency_per_day_upper_limit = 4
|
||||
|
||||
@ -150,7 +150,7 @@ object RequestHeader {
|
||||
final lazy val `If-None-Match` = "If-None-Match"
|
||||
|
||||
final lazy val `X-Request-ID` = "X-Request-ID" // Berlin Group
|
||||
final lazy val `TPP-Redirect-URL` = "TPP-Redirect-URL" // Berlin Group
|
||||
final lazy val `TPP-Redirect-URI` = "TPP-Redirect-URI" // Berlin Group
|
||||
final lazy val Date = "Date" // Berlin Group
|
||||
// Headers to support the signature function of Berlin Group
|
||||
final lazy val Digest = "Digest" // Berlin Group
|
||||
|
||||
@ -20,7 +20,7 @@ object BerlinGroupCheck extends MdcLoggable {
|
||||
.split(",")
|
||||
.map(_.trim.toLowerCase)
|
||||
.toList.filterNot(_.isEmpty)
|
||||
private val berlinGroupMandatoryHeaderConsent = APIUtil.getPropsValue("berlin_group_mandatory_header_consent", defaultValue = "TPP-Redirect-URL")
|
||||
private val berlinGroupMandatoryHeaderConsent = APIUtil.getPropsValue("berlin_group_mandatory_header_consent", defaultValue = "TPP-Redirect-URI")
|
||||
.split(",")
|
||||
.map(_.trim.toLowerCase)
|
||||
.toList.filterNot(_.isEmpty)
|
||||
|
||||
@ -57,7 +57,7 @@ object BerlinGroupSigning extends MdcLoggable {
|
||||
RequestHeader.Digest,
|
||||
RequestHeader.Date,
|
||||
RequestHeader.`X-Request-ID`,
|
||||
//RequestHeader.`TPP-Redirect-URL`,
|
||||
//RequestHeader.`TPP-Redirect-URI`,
|
||||
) // Example fields to be signed
|
||||
orderedKeys.flatMap(key => headers.get(key).map(value => s"${key.toLowerCase()}: $value")).mkString("\n")
|
||||
}
|
||||
@ -340,7 +340,7 @@ object BerlinGroupSigning extends MdcLoggable {
|
||||
RequestHeader.Digest -> s"SHA-256=$digest",
|
||||
RequestHeader.`X-Request-ID` -> xRequestId,
|
||||
RequestHeader.Date -> dateHeader,
|
||||
RequestHeader.`TPP-Redirect-URL` -> redirectUri,
|
||||
RequestHeader.`TPP-Redirect-URI` -> redirectUri,
|
||||
)
|
||||
|
||||
val signingString = createSigningString(headers)
|
||||
@ -355,7 +355,7 @@ object BerlinGroupSigning extends MdcLoggable {
|
||||
println(s"1) Digest: $digest")
|
||||
println(s"2) ${RequestHeader.`X-Request-ID`}: $xRequestId")
|
||||
println(s"3) ${RequestHeader.Date}: $dateHeader")
|
||||
println(s"4) ${RequestHeader.`TPP-Redirect-URL`}: $redirectUri")
|
||||
println(s"4) ${RequestHeader.`TPP-Redirect-URI`}: $redirectUri")
|
||||
val signatureHeaderValue =
|
||||
s"""keyId="SN=43A, CA=CN=MAIB Prisacaru Sergiu (Test), O=MAIB", algorithm="rsa-sha256", headers="digest date x-request-id", signature="$signature""""
|
||||
println(s"5) Signature: $signatureHeaderValue")
|
||||
|
||||
@ -767,7 +767,7 @@ object Consent extends MdcLoggable {
|
||||
)
|
||||
}
|
||||
}
|
||||
val tppRedirectUrl: Option[HTTPParam] = callContext.map(_.requestHeaders).getOrElse(Nil).find(_.name == RequestHeader.`TPP-Redirect-URL`)
|
||||
val tppRedirectUrl: Option[HTTPParam] = callContext.map(_.requestHeaders).getOrElse(Nil).find(_.name == RequestHeader.`TPP-Redirect-URI`)
|
||||
Future.sequence(accounts ::: balances ::: transactions) map { views =>
|
||||
val json = ConsentJWT(
|
||||
createdByUserId = user.map(_.userId).getOrElse(""),
|
||||
|
||||
@ -35,7 +35,7 @@ import code.entitlement.Entitlement
|
||||
import code.loginattempts.LoginAttempt
|
||||
import code.metrics.APIMetrics
|
||||
import code.metrics.MappedMetric.userId
|
||||
import code.model.AppType
|
||||
import code.model.{AppType, Consumer}
|
||||
import code.model.dataAccess.{AuthUser, MappedBankAccount}
|
||||
import code.regulatedentities.MappedRegulatedEntityProvider
|
||||
import code.userlocks.UserLocksProvider
|
||||
@ -2061,9 +2061,9 @@ trait APIMethods510 {
|
||||
}
|
||||
)
|
||||
}
|
||||
(consumerId, applicationText) <- consentJson.consumer_id match {
|
||||
(consumerFromRequestBody: Option[Consumer], applicationText) <- consentJson.consumer_id match {
|
||||
case Some(id) => NewStyle.function.checkConsumerByConsumerId(id, callContext) map {
|
||||
c => (Some(c.consumerId.get), c.description)
|
||||
c => (Some(c), c.description)
|
||||
}
|
||||
case None => Future(None, "Any application")
|
||||
}
|
||||
@ -2073,7 +2073,7 @@ trait APIMethods510 {
|
||||
case Props.RunModes.Test => Consent.challengeAnswerAtTestEnvironment
|
||||
case _ => SecureRandomUtil.numeric()
|
||||
}
|
||||
createdConsent <- Future(Consents.consentProvider.vend.createObpConsent(user, challengeAnswer, None)) map {
|
||||
createdConsent <- Future(Consents.consentProvider.vend.createObpConsent(user, challengeAnswer, None, consumerFromRequestBody)) map {
|
||||
i => connectorEmptyResponse(i, callContext)
|
||||
}
|
||||
consentJWT =
|
||||
@ -2082,7 +2082,7 @@ trait APIMethods510 {
|
||||
consentJson,
|
||||
createdConsent.secret,
|
||||
createdConsent.consentId,
|
||||
consumerId,
|
||||
consumerFromRequestBody.map(_.consumerId.get),
|
||||
consentJson.valid_from,
|
||||
consentJson.time_to_live.getOrElse(3600),
|
||||
None,
|
||||
|
||||
@ -120,12 +120,20 @@ class MappedRegulatedEntity extends RegulatedEntityTrait with LongKeyedMapper[Ma
|
||||
override def entityCountry: String = EntityCountry.get
|
||||
override def entityWebSite: String = EntityWebSite.get
|
||||
override def services: String = Services.get
|
||||
// override def attributes: Option[List[RegulatedEntityAttributeSimple]] = Some(List(RegulatedEntityAttributeSimple(
|
||||
// attributeType="attributeTypeExample.value",
|
||||
// name="attributeNameExample.value",
|
||||
// value="attributeValueExample.value")
|
||||
// ))
|
||||
override def attributes: Option[List[RegulatedEntityAttributeSimple]] = None //not for mapped mode yet, will add it later.
|
||||
override def attributes: Option[List[RegulatedEntityAttributeSimple]] = Some(
|
||||
List(
|
||||
RegulatedEntityAttributeSimple(
|
||||
attributeType="STRING",
|
||||
name="CERTIFICATE_SERIAL_NUMBER",
|
||||
value="1082"
|
||||
),
|
||||
RegulatedEntityAttributeSimple(
|
||||
attributeType="STRING",
|
||||
name="CERTIFICATE_CA_NAME",
|
||||
value="BNM CA (test)"
|
||||
),
|
||||
))
|
||||
// override def attributes: Option[List[RegulatedEntityAttributeSimple]] = None //not for mapped mode yet, will add it later.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -146,7 +146,7 @@ class BerlinGroupConsent extends MdcLoggable with RestHelper with APIMethods510
|
||||
val consentJwt: Box[ConsentJWT] = JwtUtil.getSignedPayloadAsJson(consent.jsonWebToken).map(parse(_)
|
||||
.extract[ConsentJWT])
|
||||
val tppRedirectUri: immutable.Seq[String] = consentJwt.map { h =>
|
||||
h.request_headers.filter(h => h.name == RequestHeader.`TPP-Redirect-URL`)
|
||||
h.request_headers.filter(h => h.name == RequestHeader.`TPP-Redirect-URI`)
|
||||
}.getOrElse(Nil).map((_.values.mkString("")))
|
||||
val consumerRedirectUri: Option[String] = consumer.map(_.redirectURL.get).toOption
|
||||
val uri: String = tppRedirectUri.headOption.orElse(consumerRedirectUri).getOrElse("https://not.defined.com")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user