Code Monkey home page Code Monkey logo

gcn.nasa.gov's People

Contributors

blaufuss avatar courey avatar dakota002 avatar dependabot[bot] avatar eburnsastro avatar grlcodr avatar israelmcmc avatar jak574 avatar jracusin avatar lpsinger avatar michui avatar rjlorek avatar swyatt7 avatar titodalcanton avatar tohuvavohu avatar tylerbarna avatar vidushi-github avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gcn.nasa.gov's Issues

Data Access Diagram clarity

Showed the data access diagram to some users and they read the diagram as arrows from one box were leading to the others. We need a way to show that the consumers are at the right side of the arrows in each box.

Sandbox OpenID Connect identity provider for local development

Implement a sandbox OpenID Connect identity provider for local development so that parts of the web site that require login function without connecting to the real Amazon Cognito identity provider.

  1. Add node-oidc-provider as a dev dependency.
  2. Create an Architect plugin in the src/plugins directory and add it to the @plugins section of app.arc.
  3. In the plugin, add a sandbox.start hook that initializes a node-oidc-provider Provider and runs it on an open port. It can have a single, hardcoded user account.
  4. In the plugin, add a set.env hook which populates an env variable with the OIDC .well-known/openid-configuration metadata: from the sandbox identity provider if running in sandbox mode, or from the Cognito identity provider if running in production mode.
  5. Update app/routes/__auth to configure node-openid-client using the OIDC metadata returned by the plugin.

This will close #91.

User Settings / Account Preferences page

Create a User Settings or Account Preferences page. Currently the Client Credentials form (/client_credentials) is linked from the home page, but it should be linked from the User Settings or Account Preferences page.

Perhaps use the side nav layout similar to /docs or /missions.

Domain name and SSL certificate for Kafka development broker

We have a single live Kafka development broker. It needs a FQDN and an automatically renewed SSL certificate.

This issue has two parts:

  1. Domain name: get kafka0.dev.gcn.gsfc.nasa.gov assigned to development Kafka broker.
  2. Set up the instance that is hosting the Kafka broker to get an automatically renewed SSL certificate that is trusted by the default CA bundle. Let's Encrypt?

CC @cbgithubb

GCN Circulars page: more prominent link to old GCN Circulars archive, add sufficient polish to make it public

The new GCN Circulars page is very obviously a placeholder and does not look polished enough to be public yet. Ultimately, it will need to reach feature parity with the old GCN Circulars archive, but before we get to that point it needs a certain je ne sais quoi to call it finished.

Some things that might be missing:

  • Prominent link to archive
  • Explanation of what GCN Circulars are
  • Links to writing guide, code of conduct
  • An example circular
  • Maybe a tiny bit of dynamic content: link to most recent circular (that might be a task for Victor or Leo)

Change password form

Add a change password form under user preferences. It should only be displayed for users who have signed on with username and password, and not for users that have signed in with federated identities from LaunchPad, Facebook, or Google.

It should exist as a new page under the user menu and side nav.

We can use the Cognito ChangePassword API call.

Contributing guide

Write a Contributing guide with instructions for cloning the repository, setting it up for development, and making a pull request. This should be a Markdown page in the web site, but there should be a link from the README file.

Redirect users to auth methods that they have used before

Any one end user may log in with several different identity providers, sending us a different OIDC iss and sub claim each time. Since there's no way to tell that they all represent the same end user, we should maintain in our database a record of the email address that we got the last time for the given iss and sub, and ask the user if they want to sign in the same way as before.

Example:

  1. Alice logs in the first time using Facebook. We receive the claims {"iss": "facebook", "sub": "12345", "email": "[email protected]"}.
  2. Alice logs in the second time using Google. We receive the claims {"iss": google", "sub": "67890", "email": "[email protected]"}.
  3. Our application should remembers that someone has logged in before with the same email address and send back to the user: We see that you previously logged in to GCN with the email address "[email protected]" through Facebook. Would you like to log in to that account?

Quick start guide for receiving alerts

Write a Quick Start guide with instructions for receiving alerts: signing up for GCN, creating a Client Credential, and configuring confluent-kafka-python.

Home page

Create a home page (app/index.md, app/index.tsx, or app/index.mdx) with some content explaining what General Coordinates Network is, and how it is related to the legacy Gamma-ray Coordinates Network.

Sign up / Log in / User widget

Design a sign-up/log-in/account info widget for the page header. The current design, shown in the attached screen shot, only provides a Log In link and not a Sign Up link.

Definition of "Done"

  1. Research best practices by studying account widgets on other USWDS powered sites .
  2. Ask about best practices in the USWDS public Slack channel.
  3. Implement the design using react-uswds components in the page template in the file app/root.tsx.

Current placeholder design

Screen Shot 2022-01-12 at 13 48 01

Establish secure point-to-point connection between GCN Classic at GSFC and gcn-to-kafka bridge in AWS

GCN Classic uses an unencrypted, unsigned TCP protocol with only host IP authentication. It is vulnerable to IP address spoofing attacks. We need a secure connection between GCN Classic (running on a physical machine at GSFC) and our gcn-to-kafka bridge server (running in AWS).

Do a trade study of methods for establishing a secure point-to-point connection between an on-prem machine at GSFC and a compute resource (EC2 instance or ECS container) in AWS. Some options:

  1. SSH tunnel only
  2. VPN only
  3. SSH + VPN
  4. SSH + VPC route table
  5. ...other methods?

GCN Circulars instructions

Make instructions for receiving, submitting, and composing GCN Circulars by adapting content from gcn.gsfc.nasa.gov, converting to Markdown, editing for style and grammar, and migrating to new site.

History of GCN

Add a documentation page on the history of GCN:

  • Adapt text from upon https://gcn.gsfc.nasa.gov/brief_describe.html
  • Ask Scott and some GRB old-timers for good stories and anecdotes about the days of pagers
  • Discuss the new GCN, the debut of Kafka, relationship with VRO and SCiMMA

storyboard_minimum_viable_product

Put LOC level documentation under version control

The LOC level documentation is important to show that we are complying with NASA identity proofing requirements. It will also allow us to justify when we do require MFA and when we do not.

Can this be public? If so, it could be part of our developer documentation. If not, then we should have a separate private repo for this and other moderate information (i.e., not secret stuff like client credentials, but FISMA Moderate details of security, hosting, deployment).

Unknown topic or partition

Add FAQ explaining what this warning means when running the listener code. It means that no messages have ever been sent to those topics before.

For example:
b'Subscribed topic not available: gcn.classic.text.AGILE_GRB_GROUND: Broker: Unknown topic or partition'

Store OIDC state and code verifier in separate short-lived cookies

Currently, the OIDC state and code verifier (which are used to secure the login process against CSRF) are stored in the same long-lived cookie that keeps track of the user's session. It should be stored in a separate short-lived cookie that expires in just a couple minutes.

Missions page

Fill in the Missions tab with a list of all current and past participating facilities, with vital statistics such as:

  • Short description
  • Images and logos
  • Link to NSSDC page?
  • Dates of operation
  • Instruments
  • Bandpasses
  • Notice types
  • Links to mission and instrument home pages

Client credentials UX: modal, process list, or step indicator?

The interface for creating and managing client credentials currently consists of a table of existing credentials, a button that raises a modal to create a new credential, and a button to delete that raises a modal to confirm. There are a few UX problems with this:

  • When we give the user the new client ID and client secret, we should also display boilerplate code (based on the code in the docs) for a selection of Kafka clients with the credentials filled in. There is no place in the current interface to do this.
  • Modals are not the most accessible way to present a form.
  • The current implementation of the modals does not provide indication of progress because it uses client side scripting rather than React routing and Remix form handling.
  • We think that we need to add a CAPTCHA step.

Rebuild the client credentials UX using different USWDS components other than modals. Two nice options:

Current screen shots

Screen Shot 2022-04-18 at 10 05 38
Screen Shot 2022-04-18 at 10 05 54
Screen Shot 2022-04-18 at 10 06 04

Main documentation page

Complete the main Documentation landing page. Currently it is a placeholder. Suggested content:

  • A brief description of GCN
  • Verbal description of what's in the documentation, links to the most important pages

QuickStart widget - old missions

Please use full names of old mission:
XTE -> RXTE
HETE -> HETE-2
SAX -> BeppoSAX
Also add "(historical)" afterwards, so people know why they're there.

Store `sub` and `iss` claims to uniquely identify each user

According to the OpenID Connect spec:

The sub (subject) and iss (issuer) Claims, used together, are the only Claims that an RP can rely upon as a stable identifier for the End-User, since the sub Claim MUST be locally unique and never reassigned within the Issuer for a particular End-User, as described in Section 2. Therefore, the only guaranteed unique identifier for a given End-User is the combination of the iss Claim and the sub Claim.

We can't rely on sub alone to identify a user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.