Comments (2)
Current implementation intercepts all the requests and doesn’t pass the control to Spring native Rest controllers.
The interceptor assumes the incoming request is for a FHIR resource. It does the necessary access checks and then makes Http call the Fhir server.
-
Option1: Limit interceptor to FHIR resources
We define the Servlet to intercept all the request at
This can be changed to only intercept FHIR requests. One way to do that is add a "fhir" prefix to all the requests. eg - /fhir/Patient. We can configure the interceptor to handle all "fhir/*" requests. This will allow the clients to define custom endpoints using standard Spring components.
Eg - Created this sample PR for testing this - #166 -
Option2(Hard no) : Allow custom endpoints in the existing interceptor.
We will need to support custom datafetcher in the existing interceptor. Currently FHIR client is responsible for fetching data and we don’t have any abstraction on datafetcher.
This is outside the scope of the design of the Access checker framework. Supporting this will make the logic very complex and won't provide clean interfaces for access check.
We can use Option1 to support custom endpoints in Fhir Gateway.
We might have to do the following to support this -
- Use dependency injection to create core components. This will allow custom endpoints implementation to inject the required components.
- Move some interceptor core logic to utils for custom endpoints.
We will have to look at what is the best interface to support option1 but the current example provides the technical feasibility of supporting this feature.
from fhir-access-proxy.
Thanks @vivekmittal07 for your analysis and proposals. We basically went ahead with Option 1 but with the caveats that we need to provide good support for basic core functionality like JWT verification and FHIR-server access (for custom endpoint implementations). For these a bunch of refactoring was needed which are covered in PR #182.
from fhir-access-proxy.
Related Issues (20)
- Resource finder utility for processing bundles HOT 2
- As a developer for OHS, it would be nice if the example / test different configurations of HAPI were the same.
- Allow request mutation based on Access decision HOT 10
- Release new image for FHIR Gateway HOT 4
- As a developer, I can follow instructions to see how the FHIR gateway can be used to support Smart-on-FHIR apps HOT 3
- Create sample plugin using Fhir Gateway maven artifact HOT 5
- EPIC: As an early adopter, I am able to directly use the Gateway in production without maintaining a fork. HOT 1
- Support AllowedQueriesChecker for Bundle Entry Requests
- Request mutation for POST requests
- Support gzip encoding for data transfer HOT 1
- Make a new release 0.2.0 HOT 1
- Release new build to maven HOT 1
- Upgrade to JDK 17 and other related version upgrades HOT 7
- Check for all patients access in ListAccessChecker for deletion in Bundle HOT 1
- Support sending gzipped request body to the FHIR server
- Update spring version to 5.3.27 HOT 1
- Implement the option for having a list of access-checkers instead of just one.
- Implement an `AccessChecker` based on "SMART Backend Services". HOT 2
- Block access if the token is revoked (but not expired)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fhir-access-proxy.