Twilio Chat Client - Как получить мультимедийное сообщение в Android

Следующий код расшифровывает токен AAD из HTTP-заголовка Azure App Service и заполняет формулу HttpContext.User. Это грубо, поскольку вы хотите кэшировать конфигурацию, а не искать ее по каждому запросу:

    OpenIdConnectConfigurationRetriever r = new OpenIdConnectConfigurationRetriever();
    ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(options.Endpoint, r);
    OpenIdConnectConfiguration config = await configManager.GetConfigurationAsync();

    var tokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuerSigningKey = true,
        IssuerSigningKeys = config.SigningKeys.ToList(),
        ValidateIssuer = true,
        ValidIssuer = config.Issuer,
        ValidateAudience = true,
        ValidAudience = options.Audience,
        ValidateLifetime = true,
        ClockSkew = new TimeSpan(0, 0, 10)
    };

    JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();

    ClaimsPrincipal principal = null;
    SecurityToken validToken = null;

    string token = context.Request.Headers["X-MS-TOKEN-AAD-ID-TOKEN"];

    if (!String.IsNullOrWhiteSpace(token))
    {
        principal = handler.ValidateToken(token, tokenValidationParameters, out validToken);

        var validJwt = validToken as JwtSecurityToken;

        if (validJwt == null) { throw new ArgumentException("Invalid JWT"); }

        if (principal != null)
        {
            context.User.AddIdentities(principal.Identities);
        }
    }

Он работает только для Azure AD. Чтобы поддерживать других поставщиков ID (Facebook, Twitter и т. Д.), Вам нужно будет обнаружить соответствующие заголовки и выяснить, как анализировать токены каждого провайдера. Тем не менее, это должны быть только вариации по указанной теме.

0
задан Josh Correia 27 March 2019 в 07:17
поделиться