├── .DS_Store ├── CandidateScenariosList.md ├── README.md ├── draft-bertocci-identity-in-browser-00.html └── src ├── .DS_Store ├── documenthistory.md ├── draft-bertocci-identity-in-browser-00.xml ├── main.md ├── mainmatter.md ├── references.md ├── scenarios.md └── scenarios ├── .DS_Store ├── OIDC_RPSignOnFormPost.md └── SCENARIOTEMPLATE.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IDBrowserUseCases/docs/bf89bf55f600fc9962136191be3222edef54a780/.DS_Store -------------------------------------------------------------------------------- /CandidateScenariosList.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "[]{#_rsg8k1ef0cpn .anchor}Atomic scenarios for identity in the 3 | browser flows" 4 | --- 5 | 6 | This document captures the list of scenarios we believe should be 7 | described as part of this effort. Please refer to the corresponding 8 | issue entries for assignment and reference to individual scenario 9 | documents. 10 | 11 | # Sign in 12 | 13 | ## Simple redirect sign in with 1 RP - OIDC implicit+form post 14 | 15 | Web application RP1 offers sign in/sign up functionality for users of 16 | identity provider IP1, using OpenID Connect implicit flow and form_post. 17 | Ignoring how IP1 auths the user, apart from the fact that successful 18 | auth results in a cookie in IP1 domain. Notable: the IDToken might not 19 | contain user profile info, accessible via userinfo call from the server 20 | (no user agent access) in case of hybrid variant. 21 | 22 | [[\[Sign In\] Simple redirect sign in with 1 RP using OIDC implicit+form 23 | post · Issue \#4 · IDBrowserUseCases/docs 24 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/4) 25 | 26 | ## Simple redirect sign in with 1 RP - OIDC code flow 27 | 28 | Web application RP1 offers sign in/sign up functionality for users of 29 | identity provider IP1, using OpenID Connect code flow. Ignoring how IP1 30 | auths the user, apart from the fact that successful auth results in a 31 | cookie in IP1 domain. Notable: IDtoken is obtained server side, no user 32 | agent access. 33 | 34 | [[\[Sign In\] Simple redirect sign in with 1 RP with OIDC code flow · 35 | Issue \#5 · IDBrowserUseCases/docs 36 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/5) 37 | 38 | ## Simple redirect sign in with 1 RP - SAML Web SSO (redirect, post) 39 | 40 | Web application RP1 offers sign in/sign up functionality for users of 41 | identity provider IP1, using SAML. Ignoring how IP1 auths the user, 42 | apart from the fact that successful auth results in a cookie in IP1 43 | domain. Notable: the SAML assertion might be fully encrypted, hence 44 | opaque to the user agent.. 45 | 46 | [[\[Sign In\] Simple redirect sign in with 1 RP - SAML Web SSO 47 | (redirect, post) · Issue \#6 · IDBrowserUseCases/docs 48 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/6) 49 | 50 | ## Simple redirect sign in with 1 RP - SAML Web SSO (artifact) 51 | 52 | \[to the SAML people: do we need to document this?\] 53 | 54 | [[\[Sign In\] Simple redirect sign in with 1 RP - SAML Web SSO 55 | (artifact) · Issue \#7 · IDBrowserUseCases/docs 56 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/7) 57 | 58 | ## Simple redirect sign in with 1 RP - WS-Federation 59 | 60 | \[to the MS people: do you still have many apps in the wild using 61 | WS-Fed?\] 62 | 63 | [[\[Sign In\] Simple redirect sign in with 1 RP - WS-Federation · Issue 64 | \#8 · IDBrowserUseCases/docs 65 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/8) 66 | 67 | ## IDP initiated sign in 68 | 69 | The details of the flow vary depending on protocol (OIDC has an extra 70 | full redirect round trip while SAML is effectively just one x-site 71 | navigation). But typically a user with a currently authenticated session 72 | (which likely maybe was established via SSO itself) is presented with a 73 | portal-like page with links to applications they can access. Navigating 74 | to one of those applications kicks off the IDP initiated SSO flow that 75 | ultimately delivers a SSO token to the RP application and the user is, 76 | from their perspective anyway, signed in seamlessly. I don't think 77 | IDP-init uses browser features any more or differently than the SP-init 78 | variants (1st party samesite none/lax cookies and various things that 79 | look like link decoration). But it doesn't fit the WebID model (last 80 | I've seen of it anyway) where the UX assumes things start on an RP site. 81 | 82 | ## [\[Sign In\] IDP-initiated sign in · Issue \#9 · IDBrowserUseCases/docs (github.com)]{.ul} 83 | 84 | ## Poor man's OAuth2 sign in with 1 RP - "OAuth2 code flow abuse" 85 | 86 | Web application RP1 offers sign in/sign up functionality for users of 87 | identity provider IP1, abusing OAuth2 (eg conducting an OAuth2 88 | authorization code flow, attempting an API call with the resulting 89 | access token and considering the user signed in eg creating a session 90 | cookie if the call succeeds).. Ignoring how IP1 auths the user, apart 91 | from the fact that successful auth results in a cookie in IP1 domain. 92 | Notable: the user agent doesn;t see any user info, all exchanges occur 93 | server side. 94 | 95 | [[\[Sign In\] Quick and Dirty OAuth 2.0 Sign In with 1 RP - "OAuth2 code 96 | flow abuse" · Issue \#10 · IDBrowserUseCases/docs 97 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/10) 98 | 99 | ## Redirect based SSO - User already signed in RP1, need to SSO in RP2 - both RP1 and RP2 trust IP1 100 | 101 | Web application RP1 and RP2 offer sign in/sign up functionality for 102 | users of identity provider IP1, using \[any OpenID Connect flow\| any 103 | SAML flow \| any WS-Fed flow \| any proprietary cookie based auth 104 | scheme\] . The user is already signing in RP1. The user navigates to 105 | RP2, and expects to obtain an authenticated session without any 106 | interactive prompt.\ 107 | User agent access to user info depends on the mechanics of the protocol 108 | of choice. 109 | 110 | [[\[Sign In\] Redirect based SSO - User already signed in RP1, need to 111 | SSO in RP2 - both RP1 and RP2 trust IDP1 · Issue \#11 · 112 | IDBrowserUseCases/docs 113 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/11) 114 | 115 | # Sign out/session management 116 | 117 | ## OpenID Connect RP initiated logout 118 | 119 | [[\[Sign Out / SM\] OpenID Connect RP-initiated logout · Issue \#12 · 120 | IDBrowserUseCases/docs 121 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/12) 122 | 123 | ## OpenID Connect Frontchannel logout \*\* 124 | 125 | [[\[Sign Out / SM\] OpenID Connect Front-Channel Logout · Issue \#13 · 126 | IDBrowserUseCases/docs 127 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/13) 128 | 129 | ## OpenID Connect "Session Management" \*\* 130 | 131 | [[\[Sign Out / SM\] OpenID Connect \"Session Management\" · Issue \#14 · 132 | IDBrowserUseCases/docs 133 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/14) 134 | 135 | ## SAML Single Log Out (SLO) \*\* 136 | 137 | [[\[Sign Out / SM\] SAML Single Log Out (SLO) · Issue \#15 · 138 | IDBrowserUseCases/docs 139 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/15) 140 | 141 | ## IFrame Based Session Extension \*\* 142 | 143 | Would probably belong to sign in, but it's a session management 144 | technique. 145 | 146 | [[\[Sign Out / SM\] IFrame-based Session Extension · Issue \#16 · 147 | IDBrowserUseCases/docs 148 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/16) 149 | 150 | # Access Token Acquisition 151 | 152 | ## OAuth2 Code Flow 153 | 154 | Classic OAuth2 flow meant to get an access token on the app backend, 155 | that does NOT result in a RP session (but will create/leverage a AS/OP 156 | session). 157 | 158 | [[\[AT\] OAuth 2.0 Code Flow · Issue \#17 · IDBrowserUseCases/docs 159 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/17) 160 | 161 | ## OAuth2 SPA sign in/access token retrieval via code+PKCE 162 | 163 | [[\[AT\] OAuth 2.0 SPA sign in/access token retrieval via code+PKCE · 164 | Issue \#18 · IDBrowserUseCases/docs 165 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/18) 166 | 167 | ## OAuth2 SPA sign in/access token retrieval via implicit flow, fragment 168 | 169 | [[\[AT\] OAuth 2.0 SPA sign in/access token retrieval via implicit flow, 170 | fragment · Issue \#19 · IDBrowserUseCases/docs 171 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/19) 172 | 173 | ## OAuth2 SPA background token renewal (iframe)\*\* 174 | 175 | \[Code \| implicit\] + prompt=none in an iFrame. 176 | 177 | [[\[AT\] OAuth 2.0 SPA background token renewal (iframe) · Issue \#20 · 178 | IDBrowserUseCases/docs 179 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/20) 180 | 181 | ## OAuth2 SPA background token renewal (refresh token) 182 | 183 | Obtaining an access token via local code+PKCE, refresh token. 184 | 185 | [[\[AT\] OAuth 2.0 SPA background token renewal (refresh token) · Issue 186 | \#21 · IDBrowserUseCases/docs 187 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/21) 188 | 189 | ## OAuth2 JS bearer token usage 190 | 191 | Classic API call with an AT (shouldn\'t have issues, but mentioned out 192 | of exhaustiveness). 193 | 194 | [[\[AT\] OAuth 2.0 JS bearer token usage · Issue \#22 · 195 | IDBrowserUseCases/docs 196 | (github.com)]{.ul}](https://github.com/IDBrowserUseCases/docs/issues/22) 197 | 198 | # 199 | 200 | # IP1 marks device with cookie to flag it as "trusted" 201 | 202 | # 203 | 204 | # Authentication Methods: 205 | 206 | - ## Password 207 | 208 | - ## FIDO 209 | 210 | - ## QR code 211 | 212 | - ## Push to app 213 | 214 | - ## OTP via SMS to phone number 215 | 216 | - ## OTP via Email to email address 217 | 218 | - ## TOTP 219 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Browser-Dependent Identity Use Cases 2 | 3 | This repo is meant as working space for members of the identity protocols community to collaborate on documenting the ways in which identity protocols (modern and otherwise) rely on web browser features to achieve classic identity scenarios, use cases and functionality. 4 | For more details please refer to [this document](https://datatracker.ietf.org/doc/html/draft-bertocci-identity-in-browser-00). -------------------------------------------------------------------------------- /draft-bertocci-identity-in-browser-00.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Identity Use Cases in Browser Catalog 8 | 9 | 10 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 39 | 40 | 41 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 |
Internet-Draftbrowser-use-casesJanuary 2021
Bertocci & FletcherExpires 26 July 2021[Page]
1185 |
1186 |
1187 |
1188 |
Workgroup:
1189 |
Web Authorization Protocol
1190 |
Internet-Draft:
1191 |
draft-bertocci-identity-in-browser-00
1192 |
Published:
1193 |
1194 | 1195 |
1196 |
Intended Status:
1197 |
Informational
1198 |
Expires:
1199 |
1200 |
Authors:
1201 |
1202 |
1203 |
V. Bertocci
1204 |
auth0.com
1205 |
1206 |
1207 |
G. Fletcher
1208 |
Verizon Media
1209 |
1210 |
1211 |
1212 |
1213 |

Identity Use Cases in Browser Catalog

1214 |
1215 |

Abstract

1216 |

This informational document aims to gather in a single place all the most important scenarios in which identity protocols in current use leverage web browser features to achieve their goals and deliver their intended user experience. 1217 | The purpose of compiling this scenario collection is to make it easier for the identity community to engage with the browser vendors, and in particular to preserve (or enhance) user experience and expressive power of the identity protocols in mainstream use as browsers introduce new privacy preserving restrictions and new identity tailored features. 1218 | By providing a single artifact, listing scenarios in a consistent format, we hope to anchor the conversation on concrete outcomes and impact of changes on end users, developers, providers and in general everyone contributing to identity in the industry.

1219 |
1220 |
1221 |
1222 |

1223 | Status of This Memo 1224 |

1225 |

1226 | This Internet-Draft is submitted in full conformance with the 1227 | provisions of BCP 78 and BCP 79.

1228 |

1229 | Internet-Drafts are working documents of the Internet Engineering Task 1230 | Force (IETF). Note that other groups may also distribute working 1231 | documents as Internet-Drafts. The list of current Internet-Drafts is 1232 | at https://datatracker.ietf.org/drafts/current/.

1233 |

1234 | Internet-Drafts are draft documents valid for a maximum of six months 1235 | and may be updated, replaced, or obsoleted by other documents at any 1236 | time. It is inappropriate to use Internet-Drafts as reference 1237 | material or to cite them other than as "work in progress."

1238 |

1239 | This Internet-Draft will expire on 26 July 2021.

1240 |
1241 |
1242 | 1262 |
1263 |
1264 |

1265 | Table of Contents 1266 |

1267 | 1355 |
1356 |
1357 |
1358 |
1359 |

1360 | 1. Overview 1361 |

1362 |

As attempts to profile and track user activities on the web intensify, leading to increasingly egregious privacy violations, browser vendors introduce new constraints meant to thwart known tracking techniques. 1363 | As they do so, however, they often end up breaking legitimate use cases as well- with identity protocols features such as single sign on, token renewals and the like being disptoportionally affected. 1364 | Conscious of those effects and committed to preserve user experience, browser vendors are working on dedicated identity API that aim at preserving and enhancing the user experience in identity transactions, without relying on the general purpose artifacts on which current identity protocols depend on. 1365 | One key challenge that is emerging in the process is that browser vendors tend to design around a limited set of well-known, consumer-only use cases, classifying most other cases as enterprise use cases hence solvable by exceptions and local business policies, whereas that is often not the case (e.g., single sign on is a common requirements across web properties even for consumer services, such as online managines form the same publisher) or the expected solutions (e.g. companies deploying MDM and managing policies on their employees and contributors machines) are not always viable. Discussions between browser vendors and identity experts are not always easy, and are frequently repeated whenever the individuals and initiatives involved change. This makes progress difficult. 1366 | This infomational document is a collection of use cases in which identity protocols depend on web browser features to perform their intended function. By gathering the main use cases in a single, shared artifact, and by describing every use case thru a fixed schema designed to surface the most salient characteristics germane to the identity-browser features discussion, we aim to provide a tool to facilitate conversations between browser vendors and identity experts. 1367 | This is meant to be a living document, constantly gathering and discussing scenarios contribuitions (via dedicated GitHub repository and OAuth working group mailing list) and periodically incorporating new entries in the main document. The contribution process is described in Section 3.

1368 |
1369 |
1370 |

1371 | 1.1. Scope 1372 |

1373 |

This document considers in scope scenarios and use cases for which all the following requirements apply: 1374 | - must be in common use, represent a common practice, a behavior of products in widespread adoption, etc. 1375 | - can be from any mainstream identity and authorization protocol specification, regardless of standard bodies affiliation: e.g. OAuth, OpenID Connect, SAML, etc. 1376 | - must require use of browser features (e.g. cookies, redirects, decorated links, HTTP headers, local storage etc) for at least part of its sequence of messages. 1377 | - can involve, but isn't limited to: establishing a user session, obtaining credentials and intermediate artifacts (e.g. OAuth2 authorization codes).

1378 |

The following is considered out of scope: 1379 | - any scenario or protocol not currently in mainstream use, regardless of standardization status. 1380 | - any scenario not using a web broweser in any capacity. 1381 | - proposing new browser behaviors or API, or identity scenarios using hypothetical new browser capabilities. The goal of this project is to document what's already in place, to inform discussions about what's next taking place in forums shared with the browser vendors.

1382 |
1383 |
1384 |
1385 |
1386 |
1387 |
1388 |

1389 | 2. Conventions and Definitions 1390 |

1391 |

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", 1392 | "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this 1393 | document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] 1394 | when, and only when, they appear in all capitals, as shown here.

1395 |
1396 |
1397 |
1398 |
1399 |

1400 | 3. Contribution Process 1401 |

1402 |

Before submitting feedback and contributions, please familiarize yourself with our current issues list and review the working 1403 | group home page. If you're 1404 | new to this, you may also want to read the Tao of the 1405 | IETF.

1406 |

Be aware that all contributions to the specification fall under the "NOTE WELL" 1407 | terms outlined here.

1408 |

This informational draft is meant to be a living document, where new scenarios and refinement of the current ones will keep being added as needed. 1409 | This work originated in the IETF working group for OAuth, however we hope to gather contributions from the entire identity community, regardless of affiliation. 1410 | Most of the work will happen on https://github.com/IDBrowserUseCases/docs, a GitHub repository meant to facilitate contributions from the community as summarized below.

1411 |
1412 |
1413 |

1414 | 3.1. Contributing Scenarios 1415 |

1416 |

Each scenario is captured in a document following the template described in Section 4. 1417 | You can find all contributed scenarios in docs/src/scenarios. 1418 | If you want to contribute a new scenario: 1419 | 1. Please read the preamble in this section and ensure that you meet all requirements 1420 | 2. Verify that your scenario isn't already captured in any of the documents in docs/src/scenarios. If it a variant of an already captured scenario, or if you want to contribute to an existing scenario doc, please consider chiming in on the OAuth mailing list. 1421 | 3. If your scenario is new, please fork the repo and create a local copy of SCENARIOTEMPLATE.md, renaming your file to match the format protocolname_protocolscenario.md 1422 | 4. Edit your local copy by filing the appropriate sections of the template, see Section 4 for details. 1423 | 5. Once you are ready, please submit a PR to add the new doc/reflect doc updates to the scenarios folder 1424 | 6. Monitor the mailing list for discussions and requests for clarification

1425 |
1426 |
1427 |
1428 |
1429 |

1430 | 3.2. Discussing Scenarios Details and Inclusion 1431 |

1432 |

All submissions will be discussed on the mailing list, possibly undergoing revisions according to the feedback. Once rough consensus is reached, the scenario will be included in this informational document.

1433 |
1434 |
1435 |
1436 |
1437 |
1438 |
1439 |

1440 | 4. The Use Case Template 1441 |

1442 |

We capture all scenarios following a template, with the intent of providing readers with a consistent way of understanding the scenario goals, intended user experience, browser feature dependencies, privacy characteristics and any other consideration that might help assessing impact of browser feature changes on the scenario. 1443 | Here's a quick description of each template section. For more details, please refer to the scenarios already captured.

1444 | 1488 |
1489 |
1490 |
1491 |
1492 |

1493 | 5. Scenarios 1494 |

1495 |
1496 |
1497 |

1498 | 5.1. OpenID Connect Redirect Based Sign in via Form POST 1499 |

1500 |

Web application RP1 offers sign in/sign up functionality for users of identity provider IP1, using OpenID Connect implicit flow and form_post. Ignoring how IP1 auths the user, apart from the fact that successful auth results in a cookie in IP1 domain..

1501 |
1502 |
1503 |

1504 | 5.1.1. Summary 1505 |

1506 |
1507 |
1508 |
1509 | 5.1.1.1. Contributor 1510 |
1511 |
    1512 |
  • 1513 |

    Name: Vittorio Bertocci

    1514 |
  • 1515 |
  • 1516 |

    Organization: Auth0 Inc

    1517 |
  • 1518 |
  • 1519 |

    Email: vittorio@auth0.com

    1520 |
  • 1521 |
1522 |
1523 |
1524 |
1525 |
1526 |
1527 | 5.1.1.2. Protocol 1528 |
1529 | 1540 |
1541 |
1542 |
1543 |
1544 |
1545 | 5.1.1.3. Browser Features Required 1546 |
1547 |

Per legs of the flow: 1548 | RP1->IP1
1549 | - 1st party cookie (RP1 saves nonce) 1550 | - Redirect 1551 | - Decorated links 1552 | - 1st party cookie (IP1 saves its session cookie upon successful authentication)
1553 | IP1->RP1 1554 | - Form post 1555 | - 1st party cookie (nonce carrying cookie) 1556 | - Javascript (autopost)

1557 |
1558 |
1559 |
1560 | 5.1.1.3.1. Target Audience 1561 |
1562 |

This patters applies to every audience, across the board

1563 |
1564 |
1565 |
1566 |
1567 |
1568 |
1569 |
1570 | 5.1.1.4. Adoption 1571 |
1572 |

TODO Enumeration of products, industries, vendors that rely on this scenario as described.

1573 |
1574 |
1575 |
1576 |
1577 |
1578 |
1579 |

1580 | 5.1.2. Description Of The Flow 1581 |

1582 |

TODO long form description of the flow, including start state, end state, and sequence diagram when possible

1583 |
1584 |
1585 |
1586 |
1587 |

1588 | 5.1.3. Intended User Experience 1589 |

1590 |

User navigates to RP1 without any pre existing session in place. Once there, either the user clicks on something (protected route, login button) or the app determines an authentication operation is immediately required. This causes the browser to be redirected to IP1, where the user is presented with authentication prompts (details of the authentication factors/mechanics omitted in this particular scenario). Upon successful authentication, the browser is redirected to RP1, and the user is now signed in RP1.

1591 |
1592 |
1593 |
1594 |
1595 |

1596 | 5.1.4. Privacy Considerations 1597 |

1598 |

An ID token does transit thru the browser, however 1599 | 1. It's not meant for the browser. Format might change. It might be encrypted. 1600 | 2. It might or might not contain profile user attributes

1601 |
1602 |
1603 |
1604 |
1605 |

1606 | 5.1.5. Miscellaneous 1607 |

1608 |

TODO anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes.

1609 |
1610 |
1611 |
1612 |
1613 |
1614 |
1615 |

1616 | 5.2. TODO Scenario Title 1617 |

1618 |

TODO Brief description of the scenario. This is the template source.

1619 |
1620 |
1621 |

1622 | 5.2.1. Summary 1623 |

1624 |
1625 |
1626 |
1627 | 5.2.1.1. Contributor 1628 |
1629 |
    1630 |
  • 1631 |

    Name: TODO

    1632 |
  • 1633 |
  • 1634 |

    Organization: TODO

    1635 |
  • 1636 |
  • 1637 |

    Email: TODO

    1638 |
  • 1639 |
1640 |
1641 |
1642 |
1643 |
1644 |
1645 | 5.2.1.2. Protocol 1646 |
1647 |
    1648 |
  • 1649 |

    Name: TODO SAML|OIDC|OAUTH2|Other(specify)

    1650 |
  • 1651 |
  • 1652 |

    Grant/flow (if applicable): TODO eg. Implicit|Hybrid|AuthCode|SAMLArtifact|etc

    1653 |
  • 1654 |
  • 1655 |

    Reference: TODO aa https://linktospecandsection

    1656 |
  • 1657 |
1658 |
1659 |
1660 |
1661 |
1662 |
1663 | 5.2.1.3. Browser Features Required 1664 |
1665 |

todo: delete all the ones that don't apply, add anything not listed 1666 | - 1st party Cookie 1667 | - 3rd party cookies 1668 | - Redirect with link decoration 1669 | - Form post 1670 | - Local Storage 1671 | - IFrames 1672 | - JavaScript

1673 |
1674 |
1675 |
1676 | 5.2.1.3.1. Target Audience 1677 |
1678 |

todo: delete all the ones that don't apply, add anything not listed 1679 | - B2C 1680 | - B2E 1681 | - B2B 1682 | - G2C

1683 |
1684 |
1685 |
1686 |
1687 |
1688 |
1689 |
1690 | 5.2.1.4. Adoption 1691 |
1692 |

TODO Enumeration of products, industries, vendors that rely on this scenario as described.

1693 |
1694 |
1695 |
1696 |
1697 |
1698 |
1699 |

1700 | 5.2.2. Description Of The Flow 1701 |

1702 |

TODO long form description of the flow, including start state, end state, and sequence diagram when possible

1703 |
1704 |
1705 |
1706 |
1707 |

1708 | 5.2.3. Intended User Experience 1709 |

1710 |

TODO long form description of the intended user experience, with particular attention on the desired outcomes (eg no visible prompt in SSO scenarios)

1711 |
1712 |
1713 |
1714 |
1715 |

1716 | 5.2.4. Privacy Considerations 1717 |

1718 |

TODO long form description of privacy characteristics of the scenario, with particular attention to aspects affecting the browser (eg presence of browser-readable artifacts carrying user info, use of global|pairwise|no identifiers, etc).

1719 |
1720 |
1721 |
1722 |
1723 |

1724 | 5.2.5. Miscellaneous 1725 |

1726 |

TODO anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes.

1727 |
1728 |
1729 |
1730 |
1731 |
1732 |
1733 |
1734 |
1735 |

1736 | 6. Acknowledgements 1737 |

1738 |
1739 |
1740 |
1741 |
1742 |

1743 | 7. IANA Considerations 1744 |

1745 |

This draft includes no request to IANA.

1746 |
1747 |
1748 |
1749 |
1750 |

1751 | 8. Security Considerations 1752 |

1753 |

This document has no security considerations. Readers should refer to the security considerations of the specifications references by each of the individual use cases.

1754 |
1755 |
1756 |
1757 |

1758 | 9. Informative References 1759 |

1760 |
1761 |
[RFC2119]
1762 |
1763 | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
1764 |
1765 |
[RFC8174]
1766 |
1767 | Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
1768 |
1769 |
1770 |
1771 |
1772 |
1773 |

1774 | Authors' Addresses 1775 |

1776 |
1777 |
Vittorio Bertocci
1778 |
auth0.com
1779 | 1783 |
1784 |
1785 |
George Fletcher
1786 |
Verizon Media
1787 | 1791 |
1792 |
1793 |
1794 | 1802 | 1803 | 1804 | -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IDBrowserUseCases/docs/bf89bf55f600fc9962136191be3222edef54a780/src/.DS_Store -------------------------------------------------------------------------------- /src/documenthistory.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IDBrowserUseCases/docs/bf89bf55f600fc9962136191be3222edef54a780/src/documenthistory.md -------------------------------------------------------------------------------- /src/draft-bertocci-identity-in-browser-00.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Identity Use Cases in Browser Catalog 7 | auth0.com
8 | vittorio@auth0.com 9 |
10 | Verizon Media
11 | gffletch@aol.com 12 |
13 | 14 | Security 15 | Web Authorization Protocol 16 | security 17 | oauth2 18 | openid connect 19 | SAML 20 | 21 | 22 | This informational document aims to gather in a single place all the most important scenarios in which identity protocols in current use leverage web browser features to achieve their goals and deliver their intended user experience. 23 | The purpose of compiling this scenario collection is to make it easier for the identity community to engage with the browser vendors, and in particular to preserve (or enhance) user experience and expressive power of the identity protocols in mainstream use as browsers introduce new privacy preserving restrictions and new identity tailored features. 24 | By providing a single artifact, listing scenarios in a consistent format, we hope to anchor the conversation on concrete outcomes and impact of changes on end users, developers, providers and in general everyone contributing to identity in the industry. 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Overview 32 | As attempts to profile and track user activities on the web intensify, leading to increasingly egregious privacy violations, browser vendors introduce new constraints meant to thwart known tracking techniques. 33 | As they do so, however, they often end up breaking legitimate use cases as well- with identity protocols features such as single sign on, token renewals and the like being disptoportionally affected. 34 | Conscious of those effects and committed to preserve user experience, browser vendors are working on dedicated identity API that aim at preserving and enhancing the user experience in identity transactions, without relying on the general purpose artifacts on which current identity protocols depend on. 35 | One key challenge that is emerging in the process is that browser vendors tend to design around a limited set of well-known, consumer-only use cases, classifying most other cases as enterprise use cases hence solvable by exceptions and local business policies, whereas that is often not the case (e.g., single sign on is a common requirements across web properties even for consumer services, such as online managines form the same publisher) or the expected solutions (e.g. companies deploying MDM and managing policies on their employees and contributors machines) are not always viable. Discussions between browser vendors and identity experts are not always easy, and are frequently repeated whenever the individuals and initiatives involved change. This makes progress difficult. 36 | This infomational document is a collection of use cases in which identity protocols depend on web browser features to perform their intended function. By gathering the main use cases in a single, shared artifact, and by describing every use case thru a fixed schema designed to surface the most salient characteristics germane to the identity-browser features discussion, we aim to provide a tool to facilitate conversations between browser vendors and identity experts. 37 | This is meant to be a living document, constantly gathering and discussing scenarios contribuitions (via dedicated GitHub repository and OAuth working group mailing list) and periodically incorporating new entries in the main document. The contribution process is described in . 38 | 39 |
Scope 40 | This document considers in scope scenarios and use cases for which all the following requirements apply: 41 | - must be in common use, represent a common practice, a behavior of products in widespread adoption, etc. 42 | - can be from any mainstream identity and authorization protocol specification, regardless of standard bodies affiliation: e.g. OAuth, OpenID Connect, SAML, etc. 43 | - must require use of browser features (e.g. cookies, redirects, decorated links, HTTP headers, local storage etc) for at least part of its sequence of messages. 44 | - can involve, but isn't limited to: establishing a user session, obtaining credentials and intermediate artifacts (e.g. OAuth2 authorization codes). 45 | The following is considered out of scope: 46 | - any scenario or protocol not currently in mainstream use, regardless of standardization status. 47 | - any scenario not using a web broweser in any capacity. 48 | - proposing new browser behaviors or API, or identity scenarios using hypothetical new browser capabilities. The goal of this project is to document what's already in place, to inform discussions about what's next taking place in forums shared with the browser vendors. 49 |
50 |
51 | 52 |
Conventions and Definitions 53 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", 54 | "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this 55 | document are to be interpreted as described in BCP 14 56 | when, and only when, they appear in all capitals, as shown here. 57 |
58 | 59 |
Contribution Process 60 | Before submitting feedback and contributions, please familiarize yourself with our current issues list and review the working 61 | group home page. If you're 62 | new to this, you may also want to read the Tao of the 63 | IETF. 64 | Be aware that all contributions to the specification fall under the "NOTE WELL" 65 | terms outlined here. 66 | This informational draft is meant to be a living document, where new scenarios and refinement of the current ones will keep being added as needed. 67 | This work originated in the IETF working group for OAuth, however we hope to gather contributions from the entire identity community, regardless of affiliation. 68 | Most of the work will happen on https://github.com/IDBrowserUseCases/docs, a GitHub repository meant to facilitate contributions from the community as summarized below. 69 | 70 |
Contributing Scenarios 71 | Each scenario is captured in a document following the template described in . 72 | You can find all contributed scenarios in docs/src/scenarios. 73 | If you want to contribute a new scenario: 74 | 1. Please read the preamble in this section and ensure that you meet all requirements 75 | 2. Verify that your scenario isn't already captured in any of the documents in docs/src/scenarios. If it a variant of an already captured scenario, or if you want to contribute to an existing scenario doc, please consider chiming in on the OAuth mailing list. 76 | 3. If your scenario is new, please fork the repo and create a local copy of SCENARIOTEMPLATE.md, renaming your file to match the format protocolname_protocolscenario.md 77 | 4. Edit your local copy by filing the appropriate sections of the template, see for details. 78 | 5. Once you are ready, please submit a PR to add the new doc/reflect doc updates to the scenarios folder 79 | 6. Monitor the mailing list for discussions and requests for clarification 80 |
81 | 82 |
Discussing Scenarios Details and Inclusion 83 | All submissions will be discussed on the mailing list, possibly undergoing revisions according to the feedback. Once rough consensus is reached, the scenario will be included in this informational document. 84 |
85 |
86 | 87 |
The Use Case Template 88 | We capture all scenarios following a template, with the intent of providing readers with a consistent way of understanding the scenario goals, intended user experience, browser feature dependencies, privacy characteristics and any other consideration that might help assessing impact of browser feature changes on the scenario. 89 | Here's a quick description of each template section. For more details, please refer to the scenarios already captured. 90 | 91 |
    92 |
  • Scenario Name
    93 | Each scenario document opens with a concise description of the scenario.
    94 |
  • 95 |
  • Contributor
    96 | This section captures the individual(s) contributing this scenario document and their affiliation.
    97 |
  • 98 |
  • Protocol
    99 | If the scenario is part of a standard (e.g. SAML, OpenID Connect, OAuth2, etc), this section provides details such as what standard document it refers to, and any reference that can be useful to learn more about the scenario. Examples include indicating specific use cases described by the standard (grants, flows, etc), links to articles and presentations describing the scenario in more detail and so on. 100 | Please note that scenarios captured here do not necessarily need to be formally described in a standard, as long as they are in common use. A good example would be the use of cookies for preserving the nonce in OpenID Connect, or the use of cookies for representing a web app session after a federated sign in flow (regardless of the specific protocol) took place.
    101 |
  • 102 |
  • Browser Features Required
    103 | This section provides a quick reference of the browser features that play a role in the correct execution of the scenario. 104 | Examples include 1st and 3rd party cookies, redirects with link decoration, form posts, access to local storage, iFrames, JavaScript, and so on.
    105 |
  • 106 |
  • Intended User Experience
    107 | Description of the intended user experience, with particular attention on the desired outcomes (eg no visible prompt in SSO scenarios)
    108 |
  • 109 |
  • Description Of The Flow
    110 | Description of the flow, including entities coming into play, begin state, end state, and sequence diagram when possible.
    111 |
  • 112 |
  • Privacy Considerations
    113 | Description of privacy characteristics of the scenario, with particular attention to aspects affecting the browser (eg presence of browser-readable artifacts carrying user info, use of global|pairwise|no identifiers, etc).
    114 |
  • 115 |
  • Target Audience
    116 | This section is meant to indicate whether the scenario is used prevalently for a particular audience (eg B2C,B2E, B2B, G2C) or if it can be expected to be relevant for more than one category.
    117 |
  • 118 |
  • Adoption
    119 | If known or easy to assess, this session enumerates notable products, industries, vendors that rely on the scenario as described.
    120 |
  • 121 |
  • Miscellaneous
    122 | Anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes.
    123 |
  • 124 |
125 |
126 | 127 |
Scenarios 128 | 129 |
OpenID Connect Redirect Based Sign in via Form POST 130 | Web application RP1 offers sign in/sign up functionality for users of identity provider IP1, using OpenID Connect implicit flow and form_post. Ignoring how IP1 auths the user, apart from the fact that successful auth results in a cookie in IP1 domain.. 131 | 132 |
Summary 133 | 134 |
Contributor 135 | 136 |
    137 |
  • Name: Vittorio Bertocci 138 |
  • 139 |
  • Organization: Auth0 Inc 140 |
  • 141 |
  • Email: vittorio@auth0.com 142 |
  • 143 |
144 |
145 | 146 |
Protocol 147 | 148 |
    149 |
  • Name: OpenID Connect 150 |
  • 151 |
  • Grant/flow (if applicable): Implicit flow with form post 152 |
  • 153 |
  • Reference: see the (OpenID Connect Implicit flow)[https://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth] and (OAuth 2.0 Form Post Response Mode)[https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html]. 154 |
  • 155 |
156 |
157 | 158 |
Browser Features Required 159 | Per legs of the flow: 160 | RP1->IP1
161 | - 1st party cookie (RP1 saves nonce) 162 | - Redirect 163 | - Decorated links 164 | - 1st party cookie (IP1 saves its session cookie upon successful authentication)
165 | IP1->RP1 166 | - Form post 167 | - 1st party cookie (nonce carrying cookie) 168 | - Javascript (autopost)
169 | 170 |
Target Audience 171 | This patters applies to every audience, across the board 172 |
173 |
174 | 175 |
Adoption 176 | TODO Enumeration of products, industries, vendors that rely on this scenario as described. 177 |
178 |
179 | 180 |
Description Of The Flow 181 | TODO long form description of the flow, including start state, end state, and sequence diagram when possible 182 |
183 | 184 |
Intended User Experience 185 | User navigates to RP1 without any pre existing session in place. Once there, either the user clicks on something (protected route, login button) or the app determines an authentication operation is immediately required. This causes the browser to be redirected to IP1, where the user is presented with authentication prompts (details of the authentication factors/mechanics omitted in this particular scenario). Upon successful authentication, the browser is redirected to RP1, and the user is now signed in RP1. 186 |
187 | 188 |
Privacy Considerations 189 | An ID token does transit thru the browser, however 190 | 1. It’s not meant for the browser. Format might change. It might be encrypted. 191 | 2. It might or might not contain profile user attributes 192 |
193 | 194 |
Miscellaneous 195 | TODO anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes. 196 |
197 |
198 | 199 |
TODO Scenario Title 200 | TODO Brief description of the scenario. This is the template source. 201 | 202 |
Summary 203 | 204 |
Contributor 205 | 206 |
    207 |
  • Name: TODO 208 |
  • 209 |
  • Organization: TODO 210 |
  • 211 |
  • Email: TODO 212 |
  • 213 |
214 |
215 | 216 |
Protocol 217 | 218 |
    219 |
  • Name: TODO SAML|OIDC|OAUTH2|Other(specify) 220 |
  • 221 |
  • Grant/flow (if applicable): TODO eg. Implicit|Hybrid|AuthCode|SAMLArtifact|etc 222 |
  • 223 |
  • Reference: TODO aa https://linktospecandsection 224 |
  • 225 |
226 |
227 | 228 |
Browser Features Required 229 | todo: delete all the ones that don't apply, add anything not listed 230 | - 1st party Cookie 231 | - 3rd party cookies 232 | - Redirect with link decoration 233 | - Form post 234 | - Local Storage 235 | - IFrames 236 | - JavaScript 237 | 238 |
Target Audience 239 | todo: delete all the ones that don't apply, add anything not listed 240 | - B2C 241 | - B2E 242 | - B2B 243 | - G2C 244 |
245 |
246 | 247 |
Adoption 248 | TODO Enumeration of products, industries, vendors that rely on this scenario as described. 249 |
250 |
251 | 252 |
Description Of The Flow 253 | TODO long form description of the flow, including start state, end state, and sequence diagram when possible 254 |
255 | 256 |
Intended User Experience 257 | TODO long form description of the intended user experience, with particular attention on the desired outcomes (eg no visible prompt in SSO scenarios) 258 |
259 | 260 |
Privacy Considerations 261 | TODO long form description of privacy characteristics of the scenario, with particular attention to aspects affecting the browser (eg presence of browser-readable artifacts carrying user info, use of global|pairwise|no identifiers, etc). 262 |
263 | 264 |
Miscellaneous 265 | TODO anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes. 266 |
267 |
268 |
269 | 270 |
Acknowledgements 271 |
272 | 273 |
IANA Considerations 274 | This draft includes no request to IANA. 275 |
276 | 277 |
Security Considerations 278 | This document has no security considerations. Readers should refer to the security considerations of the specifications references by each of the individual use cases. 279 |
280 | 281 |
282 | 283 | 284 | Informative References 285 | 286 | 287 | 288 | 289 | 290 | 291 |
292 | -------------------------------------------------------------------------------- /src/main.md: -------------------------------------------------------------------------------- 1 | %%% 2 | title = "Identity Use Cases in Browser Catalog" 3 | abbrev = "browser-use-cases" 4 | ipr = "trust200902" 5 | area = "Security" 6 | workgroup = "Web Authorization Protocol" 7 | keyword = ["security", "oauth2", "openid connect", "SAML"] 8 | category = "info" 9 | date = 2021-01-22T11:30:00Z 10 | 11 | [seriesInfo] 12 | name = "Internet-Draft" 13 | value = "draft-bertocci-identity-in-browser-00" 14 | stream = "IETF" 15 | status = "info" 16 | 17 | [[author]] 18 | initials="V." 19 | surname="Bertocci" 20 | fullname="Vittorio Bertocci" 21 | organization="auth0.com" 22 | [author.address] 23 | email = "vittorio@auth0.com" 24 | 25 | [[author]] 26 | initials="G." 27 | surname="Fletcher" 28 | fullname="George Fletcher" 29 | organization="Verizon Media" 30 | [author.address] 31 | email = "gffletch@aol.com" 32 | 33 | 34 | %%% 35 | 36 | .# Abstract 37 | 38 | This informational document aims to gather in a single place all the most important scenarios in which identity protocols in current use leverage web browser features to achieve their goals and deliver their intended user experience. 39 | The purpose of compiling this scenario collection is to make it easier for the identity community to engage with the browser vendors, and in particular to preserve (or enhance) user experience and expressive power of the identity protocols in mainstream use as browsers introduce new privacy preserving restrictions and new identity tailored features. 40 | By providing a single artifact, listing scenarios in a consistent format, we hope to anchor the conversation on concrete outcomes and impact of changes on end users, developers, providers and in general everyone contributing to identity in the industry. 41 | 42 | {mainmatter} 43 | 44 | {{mainmatter.md}} 45 | {{references.md}} 46 | 47 | {backmatter} 48 | {{documenthistory.md}} -------------------------------------------------------------------------------- /src/mainmatter.md: -------------------------------------------------------------------------------- 1 | # Overview {#overview} 2 | 3 | As attempts to profile and track user activities on the web intensify, leading to increasingly egregious privacy violations, browser vendors introduce new constraints meant to thwart known tracking techniques. 4 | As they do so, however, they often end up breaking legitimate use cases as well- with identity protocols features such as single sign on, token renewals and the like being disptoportionally affected. 5 | Conscious of those effects and committed to preserve user experience, browser vendors are working on dedicated identity API that aim at preserving and enhancing the user experience in identity transactions, without relying on the general purpose artifacts on which current identity protocols depend on. 6 | One key challenge that is emerging in the process is that browser vendors tend to design around a limited set of well-known, consumer-only use cases, classifying most other cases as enterprise use cases hence solvable by exceptions and local business policies, whereas that is often not the case (e.g., single sign on is a common requirements across web properties even for consumer services, such as online managines form the same publisher) or the expected solutions (e.g. companies deploying MDM and managing policies on their employees and contributors machines) are not always viable. Discussions between browser vendors and identity experts are not always easy, and are frequently repeated whenever the individuals and initiatives involved change. This makes progress difficult. 7 | This infomational document is a collection of use cases in which identity protocols depend on web browser features to perform their intended function. By gathering the main use cases in a single, shared artifact, and by describing every use case thru a fixed schema designed to surface the most salient characteristics germane to the identity-browser features discussion, we aim to provide a tool to facilitate conversations between browser vendors and identity experts. 8 | This is meant to be a living document, constantly gathering and discussing scenarios contribuitions (via dedicated GitHub repository and OAuth working group mailing list) and periodically incorporating new entries in the main document. The contribution process is described in (#contributionprocess). 9 | 10 | ## Scope 11 | 12 | This document considers in scope scenarios and use cases for which all the following requirements apply: 13 | - must be in common use, represent a common practice, a behavior of products in widespread adoption, etc. 14 | - can be from any mainstream identity and authorization protocol specification, regardless of standard bodies affiliation: e.g. OAuth, OpenID Connect, SAML, etc. 15 | - must require use of browser features (e.g. cookies, redirects, decorated links, HTTP headers, local storage etc) for at least part of its sequence of messages. 16 | - can involve, but isn't limited to: establishing a user session, obtaining credentials and intermediate artifacts (e.g. OAuth2 authorization codes). 17 | 18 | The following is considered out of scope: 19 | - any scenario or protocol not currently in mainstream use, regardless of standardization status. 20 | - any scenario not using a web broweser in any capacity. 21 | - proposing new browser behaviors or API, or identity scenarios using hypothetical new browser capabilities. The goal of this project is to document what's already in place, to inform discussions about what's next taking place in forums shared with the browser vendors. 22 | 23 | 24 | # Conventions and Definitions 25 | 26 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", 27 | "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this 28 | document are to be interpreted as described in BCP 14 [@RFC2119] [@RFC8174] 29 | when, and only when, they appear in all capitals, as shown here. 30 | 31 | # Contribution Process {#contributionprocess} 32 | 33 | Before submitting feedback and contributions, please familiarize yourself with our current issues list and review the [working 34 | group home page](https://datatracker.ietf.org/wg/oauth/documents/). If you're 35 | new to this, you may also want to read the [Tao of the 36 | IETF](https://www.ietf.org/tao.html). 37 | 38 | Be aware that all contributions to the specification fall under the "NOTE WELL" 39 | terms outlined [here](https://www.ietf.org/about/note-well/). 40 | 41 | This informational draft is meant to be a living document, where new scenarios and refinement of the current ones will keep being added as needed. 42 | This work originated in the [IETF working group for OAuth](https://datatracker.ietf.org/wg/oauth/documents/), however we hope to gather contributions from the entire identity community, regardless of affiliation. 43 | Most of the work will happen on https://github.com/IDBrowserUseCases/docs, a GitHub repository meant to facilitate contributions from the community as summarized below. 44 | 45 | ## Contributing Scenarios 46 | 47 | Each scenario is captured in a document following the template described in (#usecasestemplate). 48 | You can find all contributed scenarios in [docs/src/scenarios](https://github.com/IDBrowserUseCases/docs/tree/main/src/). 49 | If you want to contribute a new scenario: 50 | 1. Please read the preamble in this section and ensure that you meet all requirements 51 | 2. Verify that your scenario isn't already captured in any of the documents in [docs/src/scenarios](https://github.com/IDBrowserUseCases/docs/tree/main/src/scenarios). If it a variant of an already captured scenario, or if you want to contribute to an existing scenario doc, please consider chiming in on the [OAuth mailing list](https://www.ietf.org/mailman/listinfo/oauth). 52 | 3. If your scenario is new, please fork the repo and create a local copy of SCENARIOTEMPLATE.md, renaming your file to match the format protocolname_protocolscenario.md 53 | 4. Edit your local copy by filing the appropriate sections of the template, see (#usecasestemplate) for details. 54 | 5. Once you are ready, please submit a PR to add the new doc/reflect doc updates to the scenarios folder 55 | 6. Monitor the [mailing list](https://www.ietf.org/mailman/listinfo/oauth) for discussions and requests for clarification 56 | 57 | 58 | ## Discussing Scenarios Details and Inclusion 59 | 60 | All submissions will be discussed on the [mailing list](https://www.ietf.org/mailman/listinfo/oauth), possibly undergoing revisions according to the feedback. Once rough consensus is reached, the scenario will be included in this informational document. 61 | 62 | # The Use Case Template {#usecasestemplate} 63 | 64 | We capture all scenarios following a template, with the intent of providing readers with a consistent way of understanding the scenario goals, intended user experience, browser feature dependencies, privacy characteristics and any other consideration that might help assessing impact of browser feature changes on the scenario. 65 | Here's a quick description of each template section. For more details, please refer to the scenarios already captured. 66 | 67 | - Scenario Name 68 | Each scenario document opens with a concise description of the scenario. 69 | 70 | - Contributor 71 | This section captures the individual(s) contributing this scenario document and their affiliation. 72 | 73 | - Protocol 74 | If the scenario is part of a standard (e.g. SAML, OpenID Connect, OAuth2, etc), this section provides details such as what standard document it refers to, and any reference that can be useful to learn more about the scenario. Examples include indicating specific use cases described by the standard (grants, flows, etc), links to articles and presentations describing the scenario in more detail and so on. 75 | Please note that scenarios captured here do not necessarily need to be formally described in a standard, as long as they are in common use. A good example would be the use of cookies for preserving the nonce in OpenID Connect, or the use of cookies for representing a web app session after a federated sign in flow (regardless of the specific protocol) took place. 76 | 77 | - Browser Features Required 78 | This section provides a quick reference of the browser features that play a role in the correct execution of the scenario. 79 | Examples include 1st and 3rd party cookies, redirects with link decoration, form posts, access to local storage, iFrames, JavaScript, and so on. 80 | 81 | - Intended User Experience 82 | Description of the intended user experience, with particular attention on the desired outcomes (eg no visible prompt in SSO scenarios) 83 | 84 | - Description Of The Flow 85 | Description of the flow, including entities coming into play, begin state, end state, and sequence diagram when possible. 86 | 87 | - Privacy Considerations 88 | Description of privacy characteristics of the scenario, with particular attention to aspects affecting the browser (eg presence of browser-readable artifacts carrying user info, use of global|pairwise|no identifiers, etc). 89 | 90 | - Target Audience 91 | This section is meant to indicate whether the scenario is used prevalently for a particular audience (eg B2C,B2E, B2B, G2C) or if it can be expected to be relevant for more than one category. 92 | 93 | - Adoption 94 | If known or easy to assess, this session enumerates notable products, industries, vendors that rely on the scenario as described. 95 | 96 | - Miscellaneous 97 | Anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes. 98 | 99 | {{scenarios.md}} 100 | 101 | # Acknowledgements {#Acknowledgements} 102 | 103 | 104 | 105 | 106 | # IANA Considerations {#IANA} 107 | 108 | This draft includes no request to IANA. 109 | 110 | 111 | # Security Considerations {#Security} 112 | 113 | This document has no security considerations. Readers should refer to the security considerations of the specifications references by each of the individual use cases. -------------------------------------------------------------------------------- /src/references.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IDBrowserUseCases/docs/bf89bf55f600fc9962136191be3222edef54a780/src/references.md -------------------------------------------------------------------------------- /src/scenarios.md: -------------------------------------------------------------------------------- 1 | # Scenarios {#scenarios} 2 | 3 | {{scenarios/OIDC_RPSignOnFormPost.md}} 4 | {{scenarios/SCENARIOTEMPLATE.md}} 5 | -------------------------------------------------------------------------------- /src/scenarios/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IDBrowserUseCases/docs/bf89bf55f600fc9962136191be3222edef54a780/src/scenarios/.DS_Store -------------------------------------------------------------------------------- /src/scenarios/OIDC_RPSignOnFormPost.md: -------------------------------------------------------------------------------- 1 | ## OpenID Connect Redirect Based Sign in via Form POST 2 | Web application RP1 offers sign in/sign up functionality for users of identity provider IP1, using OpenID Connect implicit flow and form_post. Ignoring how IP1 auths the user, apart from the fact that successful auth results in a cookie in IP1 domain.. 3 | 4 | ### Summary 5 | 6 | #### Contributor 7 | - Name: Vittorio Bertocci 8 | - Organization: Auth0 Inc 9 | - Email: vittorio@auth0.com 10 | 11 | #### Protocol 12 | - Name: OpenID Connect 13 | - Grant/flow (if applicable): Implicit flow with form post 14 | - Reference: see the (OpenID Connect Implicit flow)[https://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth] and (OAuth 2.0 Form Post Response Mode)[https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html]. 15 | 16 | #### Browser Features Required 17 | Per legs of the flow: 18 | RP1->IP1 19 | - 1st party cookie (RP1 saves nonce) 20 | - Redirect 21 | - Decorated links 22 | - 1st party cookie (IP1 saves its session cookie upon successful authentication) 23 | IP1->RP1 24 | - Form post 25 | - 1st party cookie (nonce carrying cookie) 26 | - Javascript (autopost) 27 | 28 | ##### Target Audience 29 | This patters applies to every audience, across the board 30 | 31 | #### Adoption 32 | TODO Enumeration of products, industries, vendors that rely on this scenario as described. 33 | 34 | ### Description Of The Flow 35 | TODO long form description of the flow, including start state, end state, and sequence diagram when possible 36 | ### Intended User Experience 37 | User navigates to RP1 without any pre existing session in place. Once there, either the user clicks on something (protected route, login button) or the app determines an authentication operation is immediately required. This causes the browser to be redirected to IP1, where the user is presented with authentication prompts (details of the authentication factors/mechanics omitted in this particular scenario). Upon successful authentication, the browser is redirected to RP1, and the user is now signed in RP1. 38 | 39 | ### Privacy Considerations 40 | An ID token does transit thru the browser, however 41 | 1. It’s not meant for the browser. Format might change. It might be encrypted. 42 | 2. It might or might not contain profile user attributes 43 | ### Miscellaneous 44 | TODO anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes. -------------------------------------------------------------------------------- /src/scenarios/SCENARIOTEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## TODO Scenario Title 2 | TODO Brief description of the scenario. This is the template source. 3 | 4 | ### Summary 5 | 6 | #### Contributor 7 | - Name: TODO 8 | - Organization: TODO 9 | - Email: TODO 10 | 11 | #### Protocol 12 | - Name: TODO SAML|OIDC|OAUTH2|Other(specify) 13 | - Grant/flow (if applicable): TODO eg. Implicit|Hybrid|AuthCode|SAMLArtifact|etc 14 | - Reference: TODO aa https://linktospecandsection 15 | 16 | #### Browser Features Required 17 | todo: delete all the ones that don't apply, add anything not listed 18 | - 1st party Cookie 19 | - 3rd party cookies 20 | - Redirect with link decoration 21 | - Form post 22 | - Local Storage 23 | - IFrames 24 | - JavaScript 25 | 26 | ##### Target Audience 27 | todo: delete all the ones that don't apply, add anything not listed 28 | - B2C 29 | - B2E 30 | - B2B 31 | - G2C 32 | 33 | #### Adoption 34 | TODO Enumeration of products, industries, vendors that rely on this scenario as described. 35 | 36 | ### Description Of The Flow 37 | TODO long form description of the flow, including start state, end state, and sequence diagram when possible 38 | ### Intended User Experience 39 | TODO long form description of the intended user experience, with particular attention on the desired outcomes (eg no visible prompt in SSO scenarios) 40 | ### Privacy Considerations 41 | TODO long form description of privacy characteristics of the scenario, with particular attention to aspects affecting the browser (eg presence of browser-readable artifacts carrying user info, use of global|pairwise|no identifiers, etc). 42 | ### Miscellaneous 43 | TODO anything not fitting any of the sections above that is relevant for understanding how the scenario might be affected by browser changes. --------------------------------------------------------------------------------