FHIR Chat · FHIR-I Thu Q3 · fhir/infrastructure-wg

Stream: fhir/infrastructure-wg

Topic: FHIR-I Thu Q3


view this post on Zulip Josh Mandel (Oct 04 2018 at 17:52):

SMART Ballot Publication Request: draft

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:27):

Updated SMART spec with MUST -> SHALL, fixed a typo at: https://build.fhir.org/ig/HL7/smart-app-launch/scopes-and-launch-context/index.html

(this commit is what changed).

Also see this PR for one way to call attention to OIDC "Mandatory to Implement" without adding our own "SHALL" language: https://github.com/HL7/smart-app-launch/pull/284/files?short_path=ce47c6e#diff-ce47c6efdc1a32047e3daf6df7b30c2a

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:28):

I think I remember now the discussion we had about this before.

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:29):

discussion reflected in our SMART spec, or something we missed in incorporating changes?

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:29):

Are those things already mandatory in the OIDC spec? And SMART is just calling attention to what's already required by OIDC?

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:29):

Correct.

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:29):

technically "Mandatory to implement" is what OIDC says.

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:32):

So our options (including unpalatable or very challenging ones) are:
1. Don't use OIDC at all.
2. Use OIDC as is. If someone doesn't implement those mandatory features, they are not compliant with OIDC. And a SMART implementer who says they do OIDC and who doesn't do those things is technically not compliant with SMART either, since they're saying they do OIDC when they don't really.
3. SMART says "OIDC says this is mandatory, but we say you MAY do it." The SMART spec technically conflicts with the OIDC spec, since it says you can do OIDC without doing things OIDC requires.
4. We change the OIDC spec.

view this post on Zulip Isaac Vetter (Oct 04 2018 at 18:33):

5) or, in SMART, clarify some of the arguably ambiguous language from OIDC

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:34):

Are you saying that your interpretation of OIDC is different from Josh's?

view this post on Zulip Isaac Vetter (Oct 04 2018 at 18:35):

For example:

OPs MUST support the prompt parameter, as defined in Section 3.1.2, including the specified user interface behaviors such as none and login.
OIDC 15.1

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:35):

For (3), I wouldn't call this a conflict -- we say you can do OIDC, and we point out what OIDC says (see my proposed very tiny tweak

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:37):

Hmmm.

view this post on Zulip Isaac Vetter (Oct 04 2018 at 18:37):

OIDC defines 4 possible values for prompt. Which of these is required? Just none and login?

view this post on Zulip Isaac Vetter (Oct 04 2018 at 18:38):

A big part of SMART's value is that it profiles OAuth, just the important parts, please. That's missing here.

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:40):

(And re: "prompt," the OIDC spec describes 4 values, and the minimum behavior on my reading would allow a server to return an error for each.)

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:40):

To be clear, OIDC and OAuth are different beasts: OIDC defines is a complete login protocol, whereas OAuth is a protocol.

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:40):

In profiling, we only ever add constraints, extensions, etc -- we never take away requirements from a base spec.

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:41):

I'm not disputing that over time, we'll learn more and can write nice guidance to help developers understand and implement OIDC better; the question is what should we do right now?

view this post on Zulip Isaac Vetter (Oct 04 2018 at 18:41):

the minimum behavior on my reading would allow a server to return an error for each.)

Josh, would it be reasonable to add a tiny tweak to better set app developer expectations that this is reasonable behavior? I don't see how that's a necessary conclustion from reading the referenced OIDC sections.

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:42):

For 3, I was thinking of something in the vein of

  • you can do these parts of OIDC
  • and say you do sso-openid-connect
  • and not do these things OIDC says you have to
  • and you'll be compliant with SMART even though you aren't compliant with OIDC.

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:42):

I'm not saying that's what we should do. I'm saying it's on the list of options (along with terrible ones like "don't do OIDC at all").

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:45):

Sure, it's on a list of options -- but OIDC is a strong security protocol for sign-in that has seen wide review + implementation, and I'm not comfortable just hacking bits off.

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:45):

I hear you.

view this post on Zulip Isaac Vetter (Oct 04 2018 at 18:47):

Yeah, me too, really!
Instead of hacking things off, can we guide both EHR and app developers to better understand which features are required and which can be expected?

view this post on Zulip Josh Mandel (Oct 04 2018 at 18:51):

Tell me more about what this would look like? In other words, do you mean we should include "tutorial" type material in our spec to bring developers up to speed with OIDC?

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:58):

In addition to https://github.com/HL7/smart-app-launch/pull/284/files we could say something like
The EHR SHALL return an OIDC error for any mandatory OIDC features it does not support

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:59):

That's a little clunky

view this post on Zulip Michael Donnelly (Oct 04 2018 at 18:59):

But something along those lines.

view this post on Zulip Josh Mandel (Oct 04 2018 at 19:05):

I'm sure that's okay for prompt. For display, better to just ignore it, which seems like a valid way to "implement" it, per the OIDC spec (which says, "Note that the minimum level of support required for this parameter is simply that its use must not result in an error."). For Signing ID Tokens with RSA SHA-256 ... this is pretty fundamental!

Preferred locales: also "minimum level of support required for these parameters is simply to have their use not result in errors"

view this post on Zulip Michael Donnelly (Oct 04 2018 at 19:08):

Isaac, which are the ones that really matter to us?


Last updated: Apr 12 2022 at 19:14 UTC