在JwtBearerOptions中为Azure Active Directory身份验证指定客户端密钥

Jus*_*ing 2 jwt azure-active-directory openid-connect asp.net-core

如果我在Visual Studio 2017中创建新的ASP.NET Core MVC应用程序,则可以将一行一行的客户端密钥添加到AzureAdServiceCollectionExtensions

        public void Configure(string name, OpenIdConnectOptions options)
        {
            options.ClientId = _azureOptions.ClientId;
            // Add this line below
            options.ClientSecret = _azureOptions.ClientSecret;
            options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
            options.UseTokenLifetime = true;
            options.CallbackPath = _azureOptions.CallbackPath;
            options.RequireHttpsMetadata = false;
        }
Run Code Online (Sandbox Code Playgroud)

配置POCO已经连接好,可以从配置文件中获取它。

另一方面,在Web API项目中,身份验证使用JWT令牌,而Visual Studio生成的代码则不同:

        public void Configure(string name, JwtBearerOptions options)
        {
            options.Audience = _azureOptions.ClientId;
            options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
        }
Run Code Online (Sandbox Code Playgroud)

我不确定JwtBearOptions将客户密码放在何处。

Gee*_*ekn 5

您实际上并未在选项中指定客户端密码。当您使用对称密钥对令牌进行签名时使用。

    public void Configure(string name, JwtBearerOptions options)
    {
        options.Audience = _azureOptions.ClientId;
        options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
        var secretKey = "mysupersecret_secretkey!123";
        var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey));
        options.TokenValidationParameters.IssuerSigningKey = signingKey;
    }
Run Code Online (Sandbox Code Playgroud)

查看以下链接:

http://www.blinkingcaret.com/2017/09/06/secure-web-api-in-asp-net-core/ https://stormpath.com/blog/token-authentication-asp-net-core