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
Repository
A generic Shibboleth service provider service for use in Shibboleth authentication schemes.
Basic Info
Statistics
- Stars: 2
- Watchers: 72
- Forks: 2
- Open Issues: 3
- Releases: 0
Metadata Files
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/

- The web UI presents a link with a
return-urlparameter 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. - 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
- Open your browser to: http://localhost:8080
- Under the "Development Flow" section, click on the link underneath
start: - Enter any string you want as a "username"
- Click "Sign-In"
- 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.
- At the bottom of the resulting page, there should be a large link titled, "Return URL". Click on that link.
- 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 sayprod: failedsince 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
- Website: http://www.broadinstitute.org/
- Twitter: broadinstitute
- Repositories: 1,083
- Profile: https://github.com/broadinstitute
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
- @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
- express 4.16.4
- jsonwebtoken 8.5.1
- lodash 4.17.21
- saml2-js 3.0.1