Giter VIP home page Giter VIP logo

httpsig's Introduction

Hi there πŸ‘‹

  • πŸ”­ I’m currently working on a number of project to enable authentication and access control on the Web, following Solid protocol ideas, as part of the Solid Control now continuing into the Solid Wallet project.
  • 1 page CV/resumΓ©
  • πŸ‘― Full social network in my foaf rdf profile
  • πŸ˜„ Pronouns: The Babelfish
  • ⚑ Fun fact: I developed the BabelFish machine translation service at AltaVista in the 1990s.

httpsig's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

httpsig's Issues

Improve implicit dependency packaging

Currently there are a lot of dependencies with implicits, such as can be seen in implementations of the VerifySignatureTests . This has to be reviewed carefully, by grouping implicits together like other libraries do, so that the right ones are autimatically downloaded. (Reorganisation of some of the apis to further this should not be out of the question).

Ideas welcome.

Move from Try to Either

The problem with Try is that it does not make explicit the type of errors that should be expected from a function. All the code in httpSig has an upper set of exceptions to be expected, and this should be made visible. It would also work better with other cats libs.
Try was a way to get things done quickly.

scala native?

The current implementation of "Signing HTTP Messages" can compile to Java Byte Code and Java Script.

It could potentially also compile to native. I have never used the Scala Native compiler yet.

Perhaps this could be useful to folks like @TallTed or @kidehen as they have implementations of stores that are written in C or similar languages?
@ekrich is working on the Scala-Native compiler. Could it make sense to produce DLLs for software like that?
I guess that is still a bit of a stretch.

implement `Accept-Signature`

Β§5 Requesting Signatures starts with the following text:

While a signer is free to attach a signature to a request or response without prompting, it is often desirable for a potential verifier to signal that it expects a signature from a potential signer using the Accept-Signature field.

that is clearly essential for the HttpSig authentication protocol.

Add support for Future

The current implementation works with cats.effect.IO which is clean and pure. But it has the disadvantage of being a bit heavy for projects that rely on scala's Future and may just want to add an signing layer without buying into the full cats.effect stack.
See my longer comment in the discussion on custom IO Runtimes.

For expediency I used IO in commit co-operating-systems/Reactive-SoLiD#20 .

If people would like to use this library but feel this is a blocker please contact me to help me change the priority of this issue.

implement header parsing within frameworks

Currently tests are run in Akka on hand built versions of the example code, and we have something a bit more programmatic with http4s. This is useful to get the framework going.

The problem is that those tests don't tell us how headers are rally parsed by the underlying systems, and that is quite important if we want to know if our signatures are going to work correctly when deployed.

For example does the request

POST /path?param=value&foo=bar&baz=bat%2Dman HTTP/1.1
Host: www.example.com

create a modelled object where the %2D has been decoded or not? Depending
on that the result of using @query may be different. Other examples are bound to exist.

Akka has tests suites that allow one to do this (but don't use munit).
Http4s may be more complicated as it abstracts over a number of underlying components.

implement response signatures

Most of the tools needed for response signing came with #12 .
So this is not a huge amount of work. The same header parsers and @parsers can be re-used. They just need to be packaged. And tests need to be written.

I won't need them immediately, which is why I need to postpone this implementation.

Please vote on this, leave a note, or ping me if you need them.

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.