public static ReadDiscoveryDocumentArgs FromDefault(TetraPakAuthConfig authConfig)
 {
     return(new ReadDiscoveryDocumentArgs
     {
         AuthConfig = authConfig,
         Logger = authConfig.Logger
     });
 }
 public static ReadDiscoveryDocumentArgs FromMasterSource(
     TetraPakAuthConfig authConfig,
     TimeSpan?timeout = null,
     ReadDocumentPolicy fallbackPolicy = ReadDocumentPolicy.All,
     string localCachePath             = null)
 {
     return(new()
     {
         MasterSourceUrl = authConfig.DiscoveryDocumentUrl
                           ?? throw new InvalidOperationException(
             "Cannot read discovery document from master source. " +
             "Configuration does not specify a URL for the discovery document"),
         Logger = authConfig.Logger,
         AuthConfig = authConfig,
         Timeout = timeout,
         Policy = fallbackPolicy,
         LocalCachePath = string.IsNullOrWhiteSpace(localCachePath)
             ? defaultLocalCachePath()
             : localCachePath
     });
 }
Exemplo n.º 3
0
 /// <summary>
 ///   Tries obtaining an access token from the request.
 /// </summary>
 /// <returns>
 ///   An <see cref="Outcome{T}"/> instance indicating success/failure. On success the outcome
 ///   holds the access token in its <see cref="Outcome{T}.Value"/> property. On failure the outcome
 ///   declares the problem via its <see cref="Outcome.Exception"/> property.
 /// </returns>
 /// <seealso cref="GetAccessToken(Microsoft.AspNetCore.Http.HttpRequest, TetraPakAuthConfig)"/>
 /// <see cref="GetAccessTokenAsync(Microsoft.AspNetCore.Http.HttpContext, TetraPakAuthConfig)"/>
 public static Task <Outcome <ActorToken> > GetAccessTokenAsync(this HttpRequest self, TetraPakAuthConfig authConfig)
 => self.HttpContext.GetAccessTokenAsync(authConfig);
Exemplo n.º 4
0
        /// <summary>
        ///   Tries obtaining an access token from the request.
        /// </summary>
        /// <returns>
        ///   An <see cref="Outcome{T}"/> instance indicating success/failure. On success the outcome
        ///   holds the access token in its <see cref="Outcome{T}.Value"/> property. On failure the outcome
        ///   declares the problem via its <see cref="Outcome.Exception"/> property.
        /// </returns>
        /// <seealso cref="GetAccessToken(Microsoft.AspNetCore.Http.HttpContext, TetraPakAuthConfig)"/>
        /// <see cref="GetAccessTokenAsync(Microsoft.AspNetCore.Http.HttpRequest, TetraPakAuthConfig)"/>
        public static Task <Outcome <ActorToken> > GetAccessTokenAsync(this HttpContext self, TetraPakAuthConfig authConfig)
        {
            if (self.Items.TryGetValue(AmbientData.Keys.AccessToken, out var o) && o is string s &&
                ActorToken.TryParse(s, out var actorToken))
            {
                return(Task.FromResult(Outcome <ActorToken> .Success(actorToken)));
            }

            var headerIdent = authConfig?.AuthorizationHeader ?? HeaderNames.Authorization;

            s = self.Request.Headers[headerIdent].FirstOrDefault();
            if (s is {} && ActorToken.TryParse(s, out actorToken))
Exemplo n.º 5
0
 /// <summary>
 ///   Returns the request access token, or <c>null</c> if unavailable.
 /// </summary>
 /// <returns>
 ///   An <see cref="ActorToken"/> instance representing the request's access token if one can be obtained;
 ///   otherwise <c>null</c>.
 /// </returns>
 /// <seealso cref="GetAccessToken(Microsoft.AspNetCore.Http.HttpContext, TetraPakAuthConfig)"/>
 /// <see cref="GetAccessTokenAsync(Microsoft.AspNetCore.Http.HttpRequest, TetraPakAuthConfig)"/>
 public static ActorToken GetAccessToken(this HttpRequest self, TetraPakAuthConfig authConfig)
 => self.HttpContext.GetAccessToken(authConfig);
Exemplo n.º 6
0
        /// <summary>
        ///   Returns the request access token, or <c>null</c> if unavailable.
        /// </summary>
        /// <returns>
        ///   An <see cref="ActorToken"/> instance representing the request's access token if one can be obtained;
        ///   otherwise <c>null</c>.
        /// </returns>
        /// <seealso cref="GetAccessToken(Microsoft.AspNetCore.Http.HttpRequest, TetraPakAuthConfig)"/>
        /// <see cref="GetAccessTokenAsync(Microsoft.AspNetCore.Http.HttpContext, TetraPakAuthConfig)"/>
        public static ActorToken GetAccessToken(this HttpContext self, TetraPakAuthConfig authConfig)
        {
            var task = GetAccessTokenAsync(self, authConfig);

            return(task.ConfigureAwait(false).GetAwaiter().GetResult());
        }
 public TetraPakUserInformation(TetraPakAuthConfig authConfig)
 {
     _authConfig = authConfig;
 }
Exemplo n.º 8
0
        // public Outcome<ActorToken> GetAccessToken()
        // {
        //     return _httpContextAccessor.HttpContext.GetAccessToken();
        //     // return _httpContextAccessor.HttpContext.Items.TryGetValue(Keys.AccessToken, out var obj) && obj is string token obsolete
        //     //     ? Outcome<string>.Success(token)
        //     //     : Outcome<string>.Fail(new ArgumentOutOfRangeException());
        // }

        public Task <Outcome <ActorToken> > GetIdTokenAsync(TetraPakAuthConfig authConfig)
        => _httpContextAccessor.HttpContext.GetIdTokenAsync(authConfig);
 public HomeController(ILogger <HomeController> logger, TetraPakAuthConfig authConfig)
 {
     _logger     = logger;
     _authConfig = authConfig;
 }
 internal void Initialize(TetraPakAuthConfig authConfig) => AuthConfig = authConfig;
Exemplo n.º 11
0
 public RefreshTokenArgs(TetraPakAuthConfig authConfig)
 {
     _authConfig = authConfig;
 }