为了账号安全,请及时绑定邮箱和手机立即绑定

ASP .NET Core 2.0 - JWT 外部身份验证

ASP .NET Core 2.0 - JWT 外部身份验证

C#
狐的传说 2021-06-29 09:59:16
我正在尝试开始在 ASP.NET Core 2.0 Web 应用程序上进行身份验证。我的公司正在使用 Ping Federate,我正在尝试使用公司登录页面对我的用户进行身份验证,并作为回报使用我的签名密钥(X509SecurityKey在此处)验证返回的令牌。登录页面链接如下所示:https://companyname.com/authorization.oauth2?response_type=code&redirect_uri=https%3a%2f%2fJWTAuthExample%2fAccount%2fLogin&client_id=CompanyName.Web.JWTAuthExample&scope=&state=<...state...>开箱即用,我将 Startup.cs 配置为能够登录并挑战此站点。我用一个装饰我的 HomeController[Authorize(Policy="Mvc")]但是当我访问其中一个页面时,我只得到一个空白页面。当我将它添加到Debug 时,它没有命中OnChallenge或OnAuthenticationFailed方法options.Events(我认为是因为用户需要先进行身份验证)。那么,为了重定向到我的身份验证网站,我缺少什么?它是内置的还是我必须进行一些手动配置?(注意:在其他 web 应用程序中,使用 asp net 框架,我在身份验证失败时在 Authorize 属性中使用重定向)
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

按照布拉德的建议,


这是在 ASP NET 2.0 上执行 OpenId Connect 配置的代码示例


public void ConfigureServices(IServiceCollection services)

{

    services.AddMvc();


    services.AddAuthentication(options =>

    {

        options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;

        options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;

        options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;

    })

    .AddCookie()

    .AddOpenIdConnect(options =>

    {

        options.Authority = Configuration["AuthoritySite"];

        options.ClientId = Configuration["ClientId"];

        options.ClientSecret = Configuration["ClientSecret"];

        options.Scope.Clear();

        // options.Scope.Add("Any:Scope");

        options.ResponseType = OpenIdConnectResponseType.CodeIdTokenToken;

        options.SaveTokens = true;


        options.GetClaimsFromUserInfoEndpoint = true;


        options.TokenValidationParameters = new TokenValidationParameters

        {

            // Compensate server drift

            ClockSkew = TimeSpan.FromHours(12),

            // Ensure key

            IssuerSigningKey = CERTIFICATE,


            // Ensure expiry

            RequireExpirationTime = true,

            ValidateLifetime = true,                    


            // Save token

            SaveSigninToken = true

        };                


    });


    services.AddAuthorization(options =>

    {

        options.AddPolicy("Mvc", policy =>

        {

            policy.AuthenticationSchemes.Add(OpenIdConnectDefaults.AuthenticationScheme);

            policy.RequireAuthenticatedUser();

        });

    });

}

更多详细信息:https : //docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x?view=aspnetcore-2.1


查看完整回答
反对 回复 2021-07-11
  • 1 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信