Giter Site home page Giter Site logo

Comments (3)

vin-fandemand avatar vin-fandemand commented on July 30, 2024

#83

from oauth2.

jonasfj avatar jonasfj commented on July 30, 2024

But is it a good idea to put more of the OIDC specification into the a package called oauth2?

@vin-fandemand have you considered forking this package and creating a package:oidc instead?
I think it might be better to have a community package focused on serving oipenid-connect needs, and then update the README here to direct users towards said package.

from oauth2.

cwe1ss avatar cwe1ss commented on July 30, 2024

As a (not very pretty) workaround that doesn't require forking this library, we're passing an inner client to the oauth2.Client() constructor that overwrites the authorization header with the idToken.

// Custom inner client that uses the id_token instead of the access_token
class _IdTokenHttpClient extends http.BaseClient {
  _IdTokenHttpClient(this._credentials, this._innerClient);

  final oauth2.Credentials _credentials;
  final http.Client _innerClient;

  @override
  Future<http.StreamedResponse> send(http.BaseRequest request) async {
    request.headers['authorization'] = 'Bearer ${_credentials.idToken}';
    var response = await _innerClient.send(request);
    return response;
  }
}

// Usage:

// Get credentials from somewhere
oauth2.Credentials credentials = ...; 

// The inner-most http client that does the actual http call
http.BaseClient innerClient = http.Client();

// Wrap that client with our IdToken-client if necessary.
if (useIdToken) { 
  innerClient = _IdTokenHttpClient(credentials, innerClient);
}

// Create the oauth2.Client and pass in the innerClient
oauth2.Client oauthClient = oauth2.Client(credentials, httpClient: innerClient, ...);

from oauth2.

Related Issues (20)

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.