Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Authentication via ORCID #26

Closed
3 tasks
pronguen opened this issue Jun 4, 2019 · 6 comments
Closed
3 tasks

Authentication via ORCID #26

pronguen opened this issue Jun 4, 2019 · 6 comments
Assignees

Comments

@pronguen
Copy link
Contributor

pronguen commented Jun 4, 2019

Based on https://fr.slideshare.net/chgutknecht/swiss-edu-idorcidsnf/32

  • Login button (UI)
  • Interface with ORCID
  • Some data are recovered: First name, last name, ORCID, birth date, post address

Scenario (see ORCID spec):

  • SYSTEM Displays the user profile and the option to “Create or connect your ORCID”
  • GORDANA Clicks on “Create of connect your ORCID”
  • SYSTEM/ORCID Opens a pop-up with an ORCID login form
  • GORDANA Inserts her ORCID login and password and validates
  • SYSTEM/ORCID Asks her to confirm the access authorisation on her ORCID record given to her institutional repository.
  • GORDANA Read the conditions and validates
  • SYSTEM Displays a validation message that the ORCID has been linked. Displays the actualised user profile enriched with personal data from ORCID
@pronguen pronguen added the new label Jun 4, 2019
@pronguen pronguen added this to the WP3 milestone Jun 4, 2019
@sebdeleze
Copy link
Contributor

sebdeleze commented Jun 26, 2019

available now on SONAR DEV

For information, we use the ORCID sandbox API at this time. Here's a test account :

User: [email protected]
Pass: WsX*J6*tWUXmzTVk.4uc

@sebdeleze
Copy link
Contributor

Do we have an official account on ORCID for RERO ? I need this to generate credentials for production API

@mmo
Copy link
Collaborator

mmo commented Jun 26, 2019

Do we have an official account on ORCID for RERO ? I need this to generate credentials for production API

No, we don't.

@sebdeleze
Copy link
Contributor

Some new information!

If email is visible in ORCID record, we take this value to populate account email. In this case the create account process is completely transparent (registration form is not displayed), because invenio has all the information needed to create the account.

By default, in ORCID, emails are not visible. So I think email value will not be available in a lot of records.

For username, we automatically slugify the full name value. For instance, "Sébastien Délèze" becomes "sebastien-deleze"

All information about ORCID record is stored on database as dictionary (invenio has a dedicated field for that). Here's a sample of record content:

{
    "orcid": "0000-0003-4047-4000",
    "record": {
        "orcid-identifier": {
            "uri": "http://sandbox.orcid.org/0000-0003-4047-4000",
            "path": "0000-0003-4047-4000",
            "host": "sandbox.orcid.org"
        },
        "preferences": {
            "locale": "EN"
        },
        "history": {
            "creation-method": "DIRECT",
            "completion-date": null,
            "submission-date": {
                "value": 1561356052112
            },
            "last-modified-date": {
                "value": 1561616125648
            },
            "claimed": true,
            "source": null,
            "deactivation-date": null,
            "verified-email": true,
            "verified-primary-email": true
        },
        "person": {
            "last-modified-date": {
                "value": 1561614713340
            },
            "name": {
                "created-date": {
                    "value": 1561356052112
                },
                "last-modified-date": {
                    "value": 1561356052332
                },
                "given-names": {
                    "value": "Sébastien"
                },
                "family-name": {
                    "value": "Délèze"
                },
                "credit-name": null,
                "source": null,
                "visibility": "PUBLIC",
                "path": "0000-0003-4047-4000"
            },
            "other-names": {
                "last-modified-date": {
                    "value": 1561552306733
                },
                "other-name": [
                    {
                        "created-date": {
                            "value": 1561552306719
                        },
                        "last-modified-date": {
                            "value": 1561552306733
                        },
                        "source": {
                            "source-orcid": {
                                "uri": "http://sandbox.orcid.org/0000-0003-4047-4000",
                                "path": "0000-0003-4047-4000",
                                "host": "sandbox.orcid.org"
                            },
                            "source-client-id": null,
                            "source-name": {
                                "value": "Sébastien Délèze"
                            }
                        },
                        "content": "Test",
                        "visibility": "PUBLIC",
                        "path": "/0000-0003-4047-4000/other-names/16948",
                        "put-code": 16948,
                        "display-index": 1
                    }
                ],
                "path": "/0000-0003-4047-4000/other-names"
            },
            "biography": null,
            "researcher-urls": {
                "last-modified-date": null,
                "researcher-url": [],
                "path": "/0000-0003-4047-4000/researcher-urls"
            },
            "emails": {
                "last-modified-date": {
                    "value": 1561614713340
                },
                "email": [
                    {
                        "created-date": {
                            "value": 1561356052332
                        },
                        "last-modified-date": {
                            "value": 1561614713340
                        },
                        "source": {
                            "source-orcid": {
                                "uri": "http://sandbox.orcid.org/0000-0003-4047-4000",
                                "path": "0000-0003-4047-4000",
                                "host": "sandbox.orcid.org"
                            },
                            "source-client-id": null,
                            "source-name": {
                                "value": "Sébastien Délèze"
                            }
                        },
                        "email": "[email protected]",
                        "path": null,
                        "visibility": "PUBLIC",
                        "verified": false,
                        "primary": false,
                        "put-code": null
                    }
                ],
                "path": "/0000-0003-4047-4000/email"
            },
            "addresses": {
                "last-modified-date": {
                    "value": 1561556088052
                },
                "address": [
                    {
                        "created-date": {
                            "value": 1561556088050
                        },
                        "last-modified-date": {
                            "value": 1561556088052
                        },
                        "source": {
                            "source-orcid": {
                                "uri": "http://sandbox.orcid.org/0000-0003-4047-4000",
                                "path": "0000-0003-4047-4000",
                                "host": "sandbox.orcid.org"
                            },
                            "source-client-id": null,
                            "source-name": {
                                "value": "Sébastien Délèze"
                            }
                        },
                        "country": {
                            "value": "CH"
                        },
                        "visibility": "PUBLIC",
                        "path": "/0000-0003-4047-4000/address/5626",
                        "put-code": 5626,
                        "display-index": 1
                    }
                ],
                "path": "/0000-0003-4047-4000/address"
            },
            "keywords": {
                "last-modified-date": null,
                "keyword": [],
                "path": "/0000-0003-4047-4000/keywords"
            },
            "external-identifiers": {
                "last-modified-date": null,
                "external-identifier": [],
                "path": "/0000-0003-4047-4000/external-identifiers"
            },
            "path": "/0000-0003-4047-4000/person"
        },
        "activities-summary": {
            "last-modified-date": {
                "value": 1561356577192
            },
            "educations": {
                "last-modified-date": null,
                "education-summary": [],
                "path": "/0000-0003-4047-4000/educations"
            },
            "employments": {
                "last-modified-date": {
                    "value": 1561356577192
                },
                "employment-summary": [
                    {
                        "created-date": {
                            "value": 1561356577192
                        },
                        "last-modified-date": {
                            "value": 1561356577192
                        },
                        "source": {
                            "source-orcid": {
                                "uri": "http://sandbox.orcid.org/0000-0003-4047-4000",
                                "path": "0000-0003-4047-4000",
                                "host": "sandbox.orcid.org"
                            },
                            "source-client-id": null,
                            "source-name": {
                                "value": "Sébastien Délèze"
                            }
                        },
                        "department-name": "IT",
                        "role-title": "Developer",
                        "start-date": {
                            "year": {
                                "value": "2019"
                            },
                            "month": {
                                "value": "04"
                            },
                            "day": {
                                "value": "01"
                            }
                        },
                        "end-date": null,
                        "organization": {
                            "name": "RERO",
                            "address": {
                                "city": "Martigny",
                                "region": "Valais",
                                "country": "CH"
                            },
                            "disambiguated-organization": null
                        },
                        "visibility": "PUBLIC",
                        "put-code": 35568,
                        "path": "/0000-0003-4047-4000/employment/35568"
                    }
                ],
                "path": "/0000-0003-4047-4000/employments"
            },
            "fundings": {
                "last-modified-date": null,
                "group": [],
                "path": "/0000-0003-4047-4000/fundings"
            },
            "peer-reviews": {
                "last-modified-date": null,
                "group": [],
                "path": "/0000-0003-4047-4000/peer-reviews"
            },
            "works": {
                "last-modified-date": null,
                "group": [],
                "path": "/0000-0003-4047-4000/works"
            },
            "path": "/0000-0003-4047-4000/activities"
        },
        "path": "/0000-0003-4047-4000"
    }
}

@pronguen
Copy link
Contributor Author

pronguen commented Jun 27, 2019

Thanks! I think this is enough for now. The main feature with ORCID are already satisfied: 1. easier login and 2. get the ORCID.

Later, we will think about the possibility of becoming ORCID basic member in order to access trusted data (with permission of the user), like e-mail. Subscription should be around USD 4'000.-/year incl. discount for non-profit organisations.

@sebdeleze
Copy link
Contributor

I found what happened during the demo yesterday. Normally, the creation of the second account must have been completely transparent, but it was not the case because the username "sebastien-deleze" already existed in the database, associated with the first account.

Invenio doesn't throw an error and simply shows the registration form.

@sebdeleze sebdeleze modified the milestones: WP3, Sprint 1 Jul 2, 2019
@pronguen pronguen added the Epic label Jul 4, 2019
@sebdeleze sebdeleze removed the Epic label Jul 8, 2019
@sebdeleze sebdeleze modified the milestones: Sprint 1, Sprint 2 Jul 8, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants