Giter Site home page Giter Site logo

authn's People

Contributors

cainlevy 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

authn's Issues

Account Security Event Logging

Keeping an audit trail of successful logins and password changes for an account would allow an application to show the end-user their security event history. This allows an end-user (or a support team) to investigate suspicious activity.

500 error with invalid session JWT

authn_1  | JSON::JWS::VerificationFailed (JSON::JWS::VerificationFailed):
authn_1  |
authn_1  | app/models/session_jwt.rb:14:in `decode'
authn_1  | lib/authn_session.rb:26:in `authn_session'
authn_1  | app/controllers/sessions_controller.rb:37:in `refresh'

Authenticated Password Changes

Users should be able to change passwords without going through the email process. This should only work if they have an active AuthN session.

Account Archival

Ability to permanently archive (aka delete) an account, freeing up the username and deleting all sensitive or private information.

Heuristic-driven MFA Challenges

An additional MFA option to require that accounts pass additional MFA challenges when heuristics determine that the access is "unusual".

BCrypt Cost Migration

When choosing to increase the BCrypt work factor, a person should be able to walk the database and increase the work factor of all stored hashes without waiting for a next login.

Countermeasures for Scripted Signups

Throttles are not enough to fight a distributed attack on the signup process. This feature adds support for advanced countermeasures that make scripted signups costly and difficult, without resorting to CAPTCHA.

Throttling for Abusable Endpoints

Throttling for every endpoint that leaks information about users in the system or can be used to incur costs to the business (e.g. SMS). A well-designed throttling plan should leave normal users unaffected while slowing and eventually auto-banning attackers.

Make redirect-on-logout configurable

XHR/fetch will follow the redirect on the front end, creating a page refresh. We should be able to programmatically handle the outcome of a logout (e.g. by nulling out the user reference on the frontend).

Disable Signups

Users may want to freeze their account list or provision accounts separately, e.g. through invites. This setting should disable both the signup and username availability endpoints.

Account Device Management

Track all devices connected to an account, and provide endpoints that then application can integrate to provide end-users with the ability to review and revoke any connected device.

provide better dev feedback for missing configuration

The config/initializers/app.rb file provides a passable experience for folks who enjoy following stack traces to discover code comments, but no one else. Parsing out ENV variables should provide a better dev experience with clean errors and wiki links for missing variables.

Single Sign-On

Enable SSO across multiple applications and domains, and ensure that signing out from one location will also sign out all other locations.

Twilio MFA

Support for SMS-based MFA using provided Twilio credentials. Includes support for formatting and verifying a number.

Different from #10 because it actually implements delivery process and removes need for app to integrate Twilio itself.

Domain-restricted account creation

Restricting sign ups to an organizational domain means validating usernames and also implementing an email verification step. Half of that is a feature and the other half is a HOWTO.

Passwordless Login Links

Password-less login links can be delivered by trusted channels such as emails or native app push notifications. The page where a user initiated the process can poll for updates and proceed immediately once the login link has been activated.

Account Locking

Ability to lock an account, such that the login name remains claimed but can no longer be authenticated or reset.

Ability to unlock.

Rewrite into Go or Rust

At some point performance will become more important than ironing out the early featureset. That's the right time to learn and rewrite into Go or Rust. The AuthN service should be able to do a lot with little hardware.

configurable BCrypt cost

Consider making the BCrypt cost configurable but impose a minimum cost.

It shouldn't be commonly needed, but it's easy to make available.

support routing path prefixes for path-based microservice routing

Some deployments may require a single domain to proxy between multiple services based on Layer 7 path matching. Amazon's ALB supports this, for example.

In order for AuthN to work in this scenario, it needs to knows its full base URL (including path) and match routes accordingly. It also needs to ensure that the refresh token cookie is scoped to the correct path.

The Ruby and JavaScript clients will also need to be updated to ensure the base path is included in URLs.

The JavaScript client should not yet worry about base URL issues in the application cookie store.

Advanced Password Policies

Advanced password policies for required rotation intervals, history-driven reuse requirements, or other rules that may be important to an organization.

Email/SMS-based MFA

Generate and deliver a MFA code suitable to be delivered by application emails or SMS and typed by hand.

Social Provider Logins (Facebook, Google, etc)

Keratin AuthN could remain focused entirely on username/password credentials (aka owned accounts) or it could expand to include connections to third-party accounts from Facebook, Google, Microsoft, GitHub, and similar.

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.