https://github.com/broadinstitute/shibboleth-service-provider

A generic Shibboleth service provider service for use in Shibboleth authentication schemes.

https://github.com/broadinstitute/shibboleth-service-provider

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.1%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

A generic Shibboleth service provider service for use in Shibboleth authentication schemes.

Basic Info
  • Host: GitHub
  • Owner: broadinstitute
  • License: bsd-3-clause
  • Language: JavaScript
  • Default Branch: master
  • Homepage:
  • Size: 270 KB
Statistics
  • Stars: 2
  • Watchers: 72
  • Forks: 2
  • Open Issues: 3
  • Releases: 0
Created over 10 years ago · Last pushed 9 months ago
Metadata Files
Readme License Codeowners

README.md

Shibboleth Service Provider

A generic Shibboleth service provider service for use in Shibboleth authentication schemes (e.g. NIH).

https://broad-shibboleth-prod.appspot.com/

eRA Commons Account Linking Sequence Diagram

  1. The web UI presents a link with a return-url parameter which includes the literal string {token}. Once the user has successfully completed the eRA Commons login flow, they will be redirected to this URL with the {token} literal replaced by the encoded JWT.
  2. The JWT is encoded and signed with this system's private key. It must be verified using this system's public key, available at the URL /public-key.pem.

Development

Philosophy

Fast cycles enable learning through experimentation. This provides the foundation for deep system interrogation and innovation as well as safety because of the ability to recover quickly. Fast cycles have been prioritized in this implementation, both for local changes as well as changes to the system as it exists in a production environment.

Approachability is achieved through supporting development and testing as first-class features. Fake, development-appropriate flows with examples are implemented and supported as production features.

Loose coupling is achieved through parameterization, specifically the return-url. This has security implications, so these URLs must be on a whitelist. The flow is carefully constructed so developers can complete and test a production implementation before requesting addition to the whitelist, which is not necessary to enable the flow, only to make it smoother.

Getting Started

bash npm start

Minimal server up test:

bash curl localhost:8080/hello

Beyond this, it should be possible to interrogate the system by using any HTTP client. The error messages should help guide toward correct usage. This ideal is not always achieved, but it is the goal.

Running Dev Flow locally

Before committing/pushing your changes, you should test the dev flow locally.

Pre-requisite

The application gets configuration information from a Google Bucket. In order for you to run the Shibboleth service locally, you must gcloud auth login as your firecloud.org user because this is the account that developers own that have access to the configuration bucket. If you are already logged in as your firecloud.org user, try logging in again.

How to execute the dev flow

  1. Open your browser to: http://localhost:8080
  2. Under the "Development Flow" section, click on the link underneath start:
  3. Enter any string you want as a "username"
  4. Click "Sign-In"
  5. You should quickly get a response that says ""Sign-In" Successful!" at the top of the page. If the page hangs, or you get an error at this point, check that you have satisfied the pre-requisite.
  6. At the bottom of the resulting page, there should be a large link titled, "Return URL". Click on that link.
  7. This should take you to a page title "Example Return Page" and it should have a section title "Verification" containing dev: passed. At this point it is normal and expected to say prod: failed since we did not test the Prod flow.

Hot Reloading

If running locally, the server must be started with the environment variable GOOGLE_CLOUD_PROJECT defined, which provides the source for permissions checking.

bash GOOGLE_CLOUD_PROJECT=broad-shibboleth-prod npm start

bash tar -c --exclude='./node_modules/*' . \ | curl localhost:8080/.src --data-binary @- \ -H "Authorization: Bearer $(gcloud auth print-access-token)"

Deployment

The Shibboleth Service Provider is hosted on Google App Engine as a single application which supports both the development and production workflows. Google Cloud Build deploys a new version of the application automatically when commits are merged to the master branch.

Owner

  • Name: Broad Institute
  • Login: broadinstitute
  • Kind: organization
  • Location: Cambridge, MA

Broad Institute of MIT and Harvard

GitHub Events

Total
  • Issues event: 1
  • Delete event: 7
  • Push event: 5
  • Pull request event: 11
  • Pull request review event: 10
  • Create event: 5
Last Year
  • Issues event: 1
  • Delete event: 7
  • Push event: 5
  • Pull request event: 11
  • Pull request review event: 10
  • Create event: 5

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 6
  • Total pull requests: 75
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: 11 days
  • Total issue authors: 1
  • Total pull request authors: 18
  • Average comments per issue: 0.83
  • Average comments per pull request: 0.71
  • Merged pull requests: 60
  • Bot issues: 0
  • Bot pull requests: 11
Past Year
  • Issues: 0
  • Pull requests: 7
  • Average time to close issues: N/A
  • Average time to close pull requests: about 14 hours
  • Issue authors: 0
  • Pull request authors: 6
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • dmohs (6)
Pull Request Authors
  • dmohs (19)
  • dependabot[bot] (11)
  • tlangs (7)
  • marctalbott (6)
  • coreone (6)
  • davidbernick (5)
  • gpolumbo-broad (4)
  • yonghaoy (3)
  • samanehsan (3)
  • davidangb (3)
  • Ghost-in-a-Jar (3)
  • s-rubenstein (3)
  • andy7i (3)
  • dvoet (2)
  • rushtong (2)
Top Labels
Issue Labels
Pull Request Labels
dependencies (11)

Dependencies

package-lock.json npm
  • @oozcitak/dom 1.15.8
  • @oozcitak/infra 1.0.8
  • @oozcitak/url 1.0.4
  • @oozcitak/util 8.3.8
  • @types/node 14.6.2
  • accepts 1.3.5
  • argparse 1.0.10
  • array-flatten 1.1.1
  • async 3.2.0
  • body-parser 1.18.3
  • buffer-equal-constant-time 1.0.1
  • bytes 3.0.0
  • content-disposition 0.5.2
  • content-type 1.0.4
  • cookie 0.3.1
  • cookie-signature 1.0.6
  • debug 2.6.9
  • debug 4.3.1
  • depd 1.1.2
  • destroy 1.0.4
  • ecdsa-sig-formatter 1.0.11
  • ee-first 1.1.1
  • encodeurl 1.0.2
  • escape-html 1.0.3
  • esprima 4.0.1
  • etag 1.8.1
  • express 4.16.4
  • finalhandler 1.1.1
  • forwarded 0.1.2
  • fresh 0.5.2
  • http-errors 1.6.3
  • iconv-lite 0.4.23
  • inherits 2.0.3
  • ipaddr.js 1.8.0
  • js-yaml 3.14.0
  • jsonwebtoken 8.5.1
  • jwa 1.4.1
  • jws 3.2.2
  • lodash 4.17.21
  • lodash.includes 4.3.0
  • lodash.isboolean 3.0.3
  • lodash.isinteger 4.0.4
  • lodash.isnumber 3.0.3
  • lodash.isplainobject 4.0.6
  • lodash.isstring 4.0.1
  • lodash.once 4.1.1
  • media-typer 0.3.0
  • merge-descriptors 1.0.1
  • methods 1.1.2
  • mime 1.4.1
  • mime-db 1.37.0
  • mime-types 2.1.21
  • ms 2.1.2
  • ms 2.0.0
  • negotiator 0.6.1
  • node-forge 0.10.0
  • on-finished 2.3.0
  • parseurl 1.3.2
  • path-to-regexp 0.1.7
  • proxy-addr 2.0.4
  • qs 6.5.2
  • range-parser 1.2.0
  • raw-body 2.3.3
  • safe-buffer 5.1.2
  • safer-buffer 2.1.2
  • saml2-js 3.0.1
  • sax 1.2.4
  • semver 5.7.1
  • send 0.16.2
  • serve-static 1.13.2
  • setprototypeof 1.1.0
  • sprintf-js 1.0.3
  • statuses 1.4.0
  • type-is 1.6.16
  • underscore 1.13.1
  • unpipe 1.0.0
  • utils-merge 1.0.1
  • vary 1.1.2
  • xml-crypto 2.0.0
  • xml-encryption 1.2.2
  • xml2js 0.4.23
  • xmlbuilder 11.0.1
  • xmlbuilder2 2.4.0
  • xmldom 0.1.27
  • xmldom 0.1.31
  • xmldom 0.4.0
  • xpath 0.0.27
package.json npm
  • express 4.16.4
  • jsonwebtoken 8.5.1
  • lodash 4.17.21
  • saml2-js 3.0.1