Skip to content

Commit 3f48bdb

Browse files
Merge pull request #1821 from NHSDigital/develop
APIM-R 1.38 Cut
2 parents dd7019f + 6e8e3d3 commit 3f48bdb

File tree

69 files changed

+1184
-831
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1184
-831
lines changed

manifest_template.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ ACCESS_MODES:
7979
- name: healthcare-worker
8080
nameSuffix: -healthcare-worker
8181
displayName: Healthcare Worker
82-
scopes: ['urn:nhsd:apim:user-nhs-id:aal3:e-referrals-service-api']
82+
scopes: ['urn:nhsd:apim:user-nhs-id:aal3:e-referrals-service-api', 'urn:nhsd:apim:user-nhs-id:aal2:e-referrals-service-api']
8383
requireCallbackUrl: true
8484
description: User restricted
8585

package-lock.json

Lines changed: 102 additions & 88 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
"license": "MIT",
1313
"homepage": "https://github.com/NHSDigital/e-referrals-service-api",
1414
"dependencies": {
15-
"@redocly/cli": "^1.23.1"
15+
"@redocly/cli": "^1.25.5"
1616
},
1717
"devDependencies": {
18-
"apigeetool": "^0.16.4",
18+
"apigeetool": "^0.16.5",
1919
"license-checker": "^25.0.1",
2020
"minimist": "^1.2.8"
2121
}

poetry.lock

Lines changed: 183 additions & 164 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

proxies/live/apiproxy/policies/AssignMessage.AuthenticationOperationOutcomeErrorResponse.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<AssignMessage async="false" continueOnError="false" enabled="true" name="AssignMessage.AuthenticationOperationOutcomeErrorResponse">
22
<Set>
33
<StatusCode>401</StatusCode>
4+
<ReasonPhrase>Unauthorized</ReasonPhrase>
45
<Payload contentType="application/fhir+json" variablePrefix="%" variableSuffix="#">{ "resourceType": "OperationOutcome", "meta": { "lastUpdated": "%current_timestamp#", "profile" : [ "%op_outcome_fhir_profile#" ] }, "issue": [ { "severity": "error", "code": "%op_outcome_issue_code#", "details": { "coding": [ { "system": "%op_outcome_issue_details_coding_system#", "code": "%op_outcome_issue_details_coding_code#" } ] }, "diagnostics": "%faultstring#" } ] }</Payload>
56
</Set>
67
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

proxies/live/apiproxy/policies/AssignMessage.Set.x-ers-acr-header.xml renamed to proxies/live/apiproxy/policies/AssignMessage.Set.x-ers-authentication-assurance-level-header.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<AssignMessage continueOnError="true" name="AssignMessage.Set.x-ers-acr-header">
1+
<AssignMessage continueOnError="true" name="AssignMessage.Set.x-ers-authentication-assurance-level-header">
22
<Set>
33
<Headers>
4-
<Header name="x-ers-acr">{accesstoken.id_token-acr}</Header>
4+
<Header name="x-ers-authentication-assurance-level">{accesstoken.id_token-authentication_assurance_level}</Header>
55
</Headers>
66
</Set>
77
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<AssignMessage enabled="true" name="AssignMessage.SetInsufficientAALVariables">
2+
<AssignVariable>
3+
<Name>faultstring</Name>
4+
<Value>The authentication method utilised is not currently supported. Contact your local Registration Authority or IT department for help.</Value>
5+
</AssignVariable>
6+
<AssignVariable>
7+
<Name>aalError</Name>
8+
<Value>true</Value>
9+
</AssignVariable>
10+
</AssignMessage>
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OauthV2.VerifyAccessToken">
2-
<Operation>VerifyAccessToken</Operation>
3-
<Scope>urn:nhsd:apim:app:level3:e-referrals-service-api urn:nhsd:apim:user-nhs-id:aal3:e-referrals-service-api</Scope>
2+
<Operation>VerifyAccessToken</Operation>
3+
<Scope>urn:nhsd:apim:app:level3:e-referrals-service-api urn:nhsd:apim:user-nhs-id:aal3:e-referrals-service-api urn:nhsd:apim:user-nhs-id:aal2:e-referrals-service-api</Scope>
44
</OAuthV2>

proxies/live/apiproxy/targets/ers-target.xml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
<TargetEndpoint name="e-referrals-service-api-target">
22
<FaultRules>
3-
<FaultRule name="access_token_expired_fhir_r4">
3+
<FaultRule name="access_token_error_fhir_r4">
44
<Step>
55
<Name>ExtractVariables.OAuthErrorFaultString</Name>
66
</Step>
77
<Step>
88
<Name>AssignMessage.SetOperationOutcomeVariablesR4</Name>
99
</Step>
10+
<Step>
11+
<Name>AssignMessage.SetInsufficientAALVariables</Name>
12+
<Condition>faultstring ~ "*OauthV2.VerifyAccessToken.scopeSet*"</Condition>
13+
</Step>
1014
<Step>
1115
<Name>AssignMessage.SetOperationOutcomeIssueCodeLogin</Name>
1216
</Step>
@@ -15,12 +19,32 @@
1519
</Step>
1620
<Condition>(oauthV2.OauthV2.VerifyAccessToken.failed = true) and (isFhirR4Path = true)</Condition>
1721
</FaultRule>
18-
<FaultRule name="access_token_expired">
22+
<FaultRule name="access_token_error">
1923
<Step>
2024
<Name>ExtractVariables.OAuthErrorFaultString</Name>
2125
</Step>
26+
<Step>
27+
<Name>AssignMessage.SetInsufficientAALVariables</Name>
28+
<Condition>faultstring ~ "*OauthV2.VerifyAccessToken.scopeSet*"</Condition>
29+
</Step>
30+
<Step>
31+
<Name>AssignMessage.SetOperationOutcomeVariablesPreR4</Name>
32+
<!--Condition is implemented this way around to account for aalError being null (https://docs.apigee.com/api-platform/reference/conditions-reference#behaviorofnulloperandsinconditionalstatements)-->
33+
<Condition>aalError == true</Condition>
34+
</Step>
35+
<Step>
36+
<Name>AssignMessage.SetOperationOutcomeIssueCodeLogin</Name>
37+
<!--Condition is implemented this way around to account for aalError being null (https://docs.apigee.com/api-platform/reference/conditions-reference#behaviorofnulloperandsinconditionalstatements)-->
38+
<Condition>aalError == true</Condition>
39+
</Step>
2240
<Step>
2341
<Name>AssignMessage.OAuthPolicyErrorResponse</Name>
42+
<!--Condition is implemented this way around to account for aalError being null (https://docs.apigee.com/api-platform/reference/conditions-reference#behaviorofnulloperandsinconditionalstatements)-->
43+
<Condition>aalError != true</Condition>
44+
</Step>
45+
<Step>
46+
<Name>AssignMessage.AuthenticationOperationOutcomeErrorResponse</Name>
47+
<Condition>aalError = true</Condition>
2448
</Step>
2549
<Condition>(oauthV2.OauthV2.VerifyAccessToken.failed = true) and (isFhirR4Path = false)</Condition>
2650
</FaultRule>
@@ -137,7 +161,7 @@
137161
</Step> <Step>
138162
<Name>AssignMessage.Remove.x-request-id-header</Name>
139163
</Step><Step>
140-
<Name>AssignMessage.Set.x-ers-acr-header</Name>
164+
<Name>AssignMessage.Set.x-ers-authentication-assurance-level-header</Name>
141165
</Step><Step>
142166
<Name>AssignMessage.Set.x-ers-amr-header</Name>
143167
</Step><Step>

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ lxml = "^4.9.4"
3030
xmlformatter = "^0.2.6"
3131
pytest-check = "^2.4.1"
3232
requests = "^2.32.3"
33-
openapi-core = "^0.19.3"
33+
openapi-core = "^0.19.4"
3434

3535

3636
[tool.poetry.dev-dependencies]
3737
flake8 = "^5.0.4"
3838
black = "^24.8"
3939
pip-licenses = "^4.5.1"
4040
jinja2 = "^3.1.4"
41-
pytest = "^8.3.2"
41+
pytest = "^8.3.3"
4242
pytest-asyncio = "^0.24.0"
4343
pytest-nhsd-apim = "^3.4.3"
4444

0 commit comments

Comments
 (0)