Aaron Coburn
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # W3C Solid Community Group: Authentication Panel * Date: 2022-05-02T14:00:00Z * Call: https://meet.jit.si/solid-authentication * Chat: https://gitter.im/solid/authentication-panel * Repository: https://github.com/solid/authentication-panel ## Present * Aaron Coburn * Abel Van den Briel * Laurens Debackere * elf Pavlik --- ## Announcements ### Meeting Recordings and Transcripts * No audio or video recording, or automated transcripts without consent. Meetings are transcribed and made public. If consent is withheld by anyone, recording/retention must not occur. * Use panel chat and repository. Queue in call to talk. ### Participation and Code of Conduct * [Join the W3C Solid Community Group](https://www.w3.org/community/solid/join), [W3C Account Request](http://www.w3.org/accounts/request), [W3C Community Contributor License Agreement](https://www.w3.org/community/about/agreements/cla/) * [Solid Code of Conduct](https://github.com/solid/process/blob/master/code-of-conduct.md), [Positive Work Environment at W3C: Code of Ethics and Professional Conduct](https://github.com/solid/process/blob/master/code-of-conduct.md) * If this is your first time, welcome! please introduce yourself. ### Scribes * Aaron --- ## Agenda ### Issues https://github.com/solid/solid-oidc/issues ### Open PRs https://github.com/solid/solid-oidc/pulls ### Test Suite location ### Dynamic Client Registration ## Minutes ### Issues * AC: We have talked last week to get through bunch of the issues and have v0.2 by the end of May. ### Open PRs * AC: Making progress moving through the issues * eP: Small PR shortly before the meeting, clarifying terms and linking them to definitions ### Test Suite location * AC: In the past we had it in the solid organization. There was reorganization of github org including moving most of the repos out. Suggestion was to move it to inrupt organization. There also was suggestion to move it into solid-contrib. I don't want to move it around. We already point from the publish spec to the old link since it was recently moved. I think we can host it in solid-oidc repo, as stable as editors draft itself. This way we wouldn't need to move it around. * eP: that makes sense to me, then we can collaborate on the code ACTION: AC to make PR to add the test suite to the Solid-OIDC codebase ### Dynamic Client Registration * AvdB: Noticed that Inrupt PB uses dynamic client registration (DCR) as a default * AvdB: why using that as a default? even when the issuer has disabled DCR * AvdB: what is the recommendation for how an app performs authentication * AvdB: esp, since DCR is not part of the Solid-OIDC spec * eP: the Inrupt authn client does support client identifiers * AvdB: as a general example, is this something we can generally encourage? (client id documents). DCR is not a MUST in the spec * AC: There are couple of issues. What the flow should be and what it is as seen by a particular application. What it should be it is for the scope of this group, when it comes to what a particular implementation is doing it is often up to that application to choose their implementation. * AC: Application first needs to discover capabilities of that OP, if it supports DCR, if it supports client identiefiers. If OP includes `webid` scope than it implements Solid-OIDC and supports client identifiers. A client (an app) should be using one of those client identifiers. If it doesn't, for example for testing, or wants to behave as ephermeral client, it can use DCR. * ...: For pod-browser it might be a bug. * eP: DCR is also problematic for client authorization. For instance, in the context of ACP, the default should be no access. Unless the policy states "any client has access", a DCR-registered client, that app would likely not be able to access anything. * ...: interop panel has a heavy emphasis on a stable identifier for clients. In the interop panel, these identifiers are used to attach access controls * ...: in real-world scenarios, we should really suggest using client identifiers * AvdB: in the examples of Inrupt PodBrowser and Penny, they use DCR by default, even in the context of the same browser session. This overloads the issuer with useless clients. Using client id documents should be the general use case * AC: I agree. You may be noticing the interplay between implementations and specifications. Given that Solid-OIDC didn't have stable published version for so long, there are multiple ways of implementing things. Up until fairly recently client id document wasn't boradly adopted. I think penny pod browser has been implemented around a year ago. When it was originally written, client identifiers might not be well understood. We haven't had a stable spec to point to, I would be interested to see where the applications will go. Client IDs provide much stronger identity for the clients. * AvdB: Maybe penny isn't a best example but inrupt pod browser seems widely used by the community. Maybe post an issue on the Inrupt PodBrowser github * AC: Pod browser has very recently started to support client id documents. It still has cases where it doesn't work. For me the question is what AuthN panel can do to improve the situation with implementations. We can have good patterns documenting how authentication flows work. It can include improving the primer. Also including better information why it is useful, explaining why it is preffered over DCR. Nicolas is very involved with client tooling. One of the issues is that there are so many permutations of what servers support, clients need to be discovering what particular server supports. * AvdB: Using the PB example since that was a common starting point. Currently, Client ID documents are a SHOULD not a MUST (same with DCR). There may be reasons not to force clients to use client id documents, how can we better encourage people to use these. * AvdB: let me know if there is anything I can do to help with this * AC: There are so many permutations since there are so many contexts where clients try to authenticate. Give all of them we can't always say that client MUST do it this way. We are also trying to move ecosystemm along in step by step fashion. If we don't allow other mechanisms than we get into compatibility issue. * eP: I'd like to consider making Client Identifiers required for an OP, otherwise it's not Solid compliant. That would also give more confidence by the client. * AC: It would be helpful to add paragraph that states that OP MUST support Client ID documents. * ...: There may be ambiguity with regards what is and what isn't dereferencable ACTION: AC to clarify requirements for OP support of Client ID documents * AvdB: is there a case where the `client_id` value is dereferencable but _not_ a Client Id Document? * AC: I think there are 2 parts. 1. If it is dereferencable, if it is 2. Fetch the document and check if it is `application/ld+json`, it must be valid JSON, it also needs to use the normative `@context`. * ...: Let's say we have some other specification which also defines dereferencable client identifiers, not JSON-LD. When OP tries to dereference it, it would need to have condition based on the format of the client id document. Even if both are JSON-LD it could check for the `@context`. * AvdB: if it is required that an OP is required to dereference these client_id URIs, then it makes interop much easier to achieve. * eP: the only case when it's not a client identifier, it's an identifier issued by the OP, which will be pre-registered by the OP. The OP can then just check if it's one of these other formats, it can use that; otherwise, it can just dereference the URI as a client identifier. * AC: This is how I implemented it. * eP: even for static registration, an OP will still manage these identifiers * AC: This is pretty much my experience with implementation. The identifier is either one that was created by OP, or external ones which would be Client ID IRIs. ### UMA updates * eP: I'd like to check with Laurens on UMA * LD: I am working with the CSS project, having trouble with DPoP during the claims pushing stage. This is unclear on the Solid-OIDC side. This could be an opportunity to specify an IRI for a DPoP-bound ID token. * AC: The way I've done this, in one stage you may be providing ID Token. When you push that claim it may perform validation of that ID Token. Also part of this validation is validating the DPOP binding. The part of this interaction involves DPoP header. The format is definitelly OIDC ID Token with some extra claims. One could argue that it is ID Token but also argument can be made that it is a differetn claim. * LD: My problem is mainly getting references to UMA and DPoP as normative references. DPoP defines use with access token. * LD: UMA doesn't define the use of DPoP, then there is nothing in the request body to tell the AS how to handle these JWTs * LD: In UMA, we're using an IRI but there is no link to DPoP * eP: We have discussed having Solid-OIDC UMA as a separate specification document where this could be normatively defined along with all of the UMA details. * LD: That would be a very good idea, which could enable other types of claims that could be provided during the claims pushing stage * AC: One thing that we are trying to do with UMA is normatively require use of the Authorization Server, but we don't want to limit it to UMA. There may be different approaches to Authorization Server. We try to balance those two competing needs. If one uses UMA we want to provide all the requrirements. * LD: I think Pavlik's proposal makes some sense. UMA details can be in dedicated document. It could also specify the details about DPoP-bound ID Token with webid claim. * AC: this makes a lot of sense and it really valuable feedback ### Alternative flows * LD: One small question about the status of the alternative flow document * AC: We have been busy with publishing FPWD of Solid-OIDC. I think defining alternative flows is next priority. Defining it on OIDC level it may be problematic. Client credentials are OAuth2 flow not OIDC. * LD: Once Solid-OIDC settles, I would be very interested in contributing to these conversations

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully