Skip to Main Content

SMART Launch

Announcement

For information related to the Oracle Partner Network (OPN) Industry Healthcare Track please visit our OPN Industry Healthcare Program page.

For specific questions related to Oracle Partner Network (OPN), please contact Partner Assistance.

Millennium FHIR and non-FHIR API Specifications and Supporting Documents can be found HERE on docs.oracle.com
Soarian FHIR API Specifications and Supporting Documents can be found HERE on docs.oracle.com.

"Bad Request" error when launching from the Code Console sandbox with forceAuthn=true flag.

Workflow or API calls:

I'm initiating the SMART on FHIR launch from the Code Console sandbox. When the flow reaches the authorization step at authorization.cerner.com, it results in a 400 Bad Request error. The issue seems to be related to the forceAuthn=true query parameter.

https://authorization.cerner.com/session-api/realm/ec2458f2-1e24-41c8-b71b-0e701af7583d?to=https%3A%2F%2Fauthorization.cerner.com%2Ftenants%2Fec2458f2-1e24-41c8-b71b-0e701af7583d%2Fprotocols%2Foauth2%2Fprofiles%2Fsmart-v1%2Fpersonas%2Fprovider%2Fauthorize%3Faud%3Dhttps%253A%252F%252Ffhir-ehr-code.cerner.com%252Fr4%252Fec2458f2-1e24-41c8-b71b-0e701af7583d%26scope%3Dlaunch%2Bprofile%2BfhirUser%2Bopenid%2Boffline_access%2Bpatient%252FAccount.read%2Bpatient%252FAllergyIntolerance.read%2Bpatient%252FAppointment.read%2Bpatient%252FBinary.read%2Bpatient%252FCarePlan.read%2Bpatient%252FCareTeam.read%2Bpatient%252FChargeItem.read%2Bpatient%252FCommunication.read%2Bpatient%252FCondition.read%2Bpatient%252FConsent.read%2Bpatient%252FCoverage.read%2Bpatient%252FDevice.read%2Bpatient%252FDiagnosticReport.read%2Bpatient%252FDocumentReference.read%2Bpatient%252FEncounter.read%2Bpatient%252FFamilyMemberHistory.read%2Bpatient%252FGoal.read%2Bpatient%252FImmunization.read%2Bpatient%252FInsurancePlan.read%2Bpatient%252FMedicationAdministration.read%2Bpatient%252FMedicationRequest.read%2Bpatient%252FNutritionOrder.read%2Bpatient%252FObservation.read%2Bpatient%252FPatient.read%2Bpatient%252FPerson.read%2Bpatient%252FProcedure.read%2Bpatient%252FProvenance.read%2Bpatient%252FQuestionnaire.read%2Bpatient%252FQuestionnaireResponse.read%2Bpatient%252FRelatedPerson.read%2Bpatient%252FSchedule.read%2Bpatient%252FServiceRequest.read%2Bpatient%252FSlot.read%2Bsystem%252FAccount.read%2Bsystem%252FAllergyIntolerance.read%2Bsystem%252FAppointment.read%2Bsystem%252FBinary.read%2Bsystem%252FCarePlan.read%2Bsystem%252FCareTeam.read%2Bsystem%252FChargeItem.read%2Bsystem%252FCommunication.read%2Bsystem%252FCondition.read%2Bsystem%252FConsent.read%2Bsystem%252FCoverage.read%2Bsystem%252FDevice.read%2Bsystem%252FDiagnosticReport.read%2Bsystem%252FDocumentReference.read%2Bsystem%252FEncounter.read%2Bsystem%252FFamilyMemberHistory.read%2Bsystem%252FGoal.read%2Bsystem%252FImmunization.read%2Bsystem%252FInsurancePlan.read%2Bsystem%252FLocation.read%2Bsystem%252FMedicationAdministration.read%2Bsystem%252FMedicationRequest.read%2Bsystem%252FNutritionOrder.read%2Bsystem%252FObservation.read%2Bsystem%252FOrganization.read%2Bsystem%252FPatient.read%2Bsystem%252FPerson.read%2Bsystem%252FPractitioner.read%2Bsystem%252FProcedure.read%2Bsystem%252FProvenance.read%2Bsystem%252FQuestionnaire.read%2Bsystem%252FQuestionnaireResponse.read%2Bsystem%252FRelatedPerson.read%2Bsystem%252FSchedule.read%2Bsystem%252FServiceRequest.read%2Bsystem%252FSlot.read%2Buser%252FAccount.read%2Buser%252FAllergyIntolerance.read%2Buser%252FAppointment.read%2Buser%252FBinary.read%2Buser%252FCarePlan.read%2Buser%252FCareTeam.read%2Buser%252FChargeItem.read%2Buser%252FCommunication.read%2Buser%252FCondition.read%2Buser%252FConsent.read%2Buser%252FCoverage.read%2Buser%252FDevice.read%2Buser%252FDiagnosticReport.read%2Buser%252FDocumentReference.read%2Buser%252FEncounter.read%2Buser%252FFamilyMemberHistory.read%2Buser%252FGoal.read%2Buser%252FImmunization.read%2Buser%252FInsurancePlan.read%2Buser%252FLocation.read%2Buser%252FMedicationAdministration.read%2Buser%252FMedicationRequest.read%2Buser%252FNutritionOrder.read%2Buser%252FObservation.read%2Buser%252FOrganization.read%2Buser%252FPatient.read%2Buser%252FPerson.read%2Buser%252FPractitioner.read%2Buser%252FProcedure.read%2Buser%252FProvenance.read%2Buser%252FQuestionnaire.read%2Buser%252FQuestionnaireResponse.read%2Buser%252FRelatedPerson.read%2Buser%252FSchedule.read%2Buser%252FServiceRequest.read%2Buser%252FSlot.read%26initialRequestId%3D92277edf-8a17-4672-9cca-8653f71588c2%26response_type%3Dcode%26launch%3D2d3a4f16-fa38-46c7-9196-3214f8c5000c%26redirect_uri%3Dhttps%253A%252F%252Fdev.drgbyai.com%252Flaunch%252Fauth%26state%3DvX0lvL9DgeijgqdC%26client_id%3Da1ce19aa-e957-4166-a778-2fedc025e068&forceAuthn=true

Background Information:

I'm using the standard authorization flow provided in the Cerner sandbox. The issue only occurs when forceAuthn=true is present in the request URL. However, if I remove this parameter or clear the browser storage (cookies/session/local) for authorization.cerner.com, the authentication proceeds without errors.

Are you developing on behalf of an Oracle Health client? Yes
If so, which client: https://cernercare.com/accounts/person/ffb07ba8-3467-41ea-8914-59a61721cf8f

Expected Result:

The authorization request should proceed successfully to millennium app, even with forceAuthn=true included, as it is meant to force re-authentication.

Actual Result:

The request returns HTTP Status 400 - Bad Request when forceAuthn=true is included in the query string. If I remove it or clear the browser memory for authorization.cerner.com, the authentication works correctly.

Has anyone faced this issue before? Does Cerner support forceAuthn=true, or is there a specific requirement to use it?

Thanks in advance!

Request Method: GET

This post has been answered by Matthew Randall-Oracle on Mar 11 2025
Jump to Answer
Comments
Post Details
Added on Mar 11 2025
2 comments
207 views