【问题标题】:Open Id Connect Callback not hitting break pointOpenid Connect 回调未命中断点
【发布时间】:2020-08-24 10:10:49
【问题描述】:

我正在使用 OpenIdConnect 连接到 IS4 服务器。一切正常,它强制我登录,然后用正确的登录代码将我带回我的 MVC 站点,以便将来调用 API。

问题是我无法让我的应用程序处理回调。我的计划是让我的用户被重定向到 SSO 登录,然后返回我的站点,在那里我可以调用 API 来在我的系统中设置用户。

这是我的 MVC 应用程序中的身份验证服务

services.AddAuthentication(options =>
{
    options.DefaultScheme = "Cookies";
    options.DefaultChallengeScheme = "oidc";
})
    .AddCookie("Cookies")
    .AddOpenIdConnect("oidc", options =>
    {
        options.Authority = "https://localhost:5000";

        options.ClientId = "mvc";
        options.ClientSecret = "49C1A7E1-0C79-4A89-A3D6-A37998FB86B0";
        options.ResponseType = "code";

        options.SaveTokens = true;
        options.CallbackPath = "/Home/Login";

        options.Scope.Add("api1");
        options.Scope.Add("offline_access");
    });

登录后,我希望能够在我的回调“/Home/Login”中捕捉到响应

在我的 HomeController 中,我有以下两个操作

[HttpPost]
public IActionResult Login(string code)
{
    _logger.LogError("TEST  1");

    return View();
}

public IActionResult Login()
{
    _logger.LogError("TEST  2");

    return View();
}

从来没有被击中,我需要做什么来控制我的用户在登录 SSO 提供商后登陆的位置?

【问题讨论】:

    标签: asp.net-core single-sign-on identityserver4 openid-connect


    【解决方案1】:

    正如my reply 解释的那样,CallbackPath 是服务器在身份验证期间重定向的路径。它由 OIDC 中间件本身自动处理,这意味着我们无法通过创建新的控制器/动作并为其设置 CallbackPath 来控制逻辑。

    根据您的要求,您可以在 OIDC OWIN 中间件中使用通知事件,该中间件调用以启用开发人员添加自定义逻辑。比如可以查询数据库,在OnTokenValidated事件中创建用户:

    options.Events = new OpenIdConnectEvents
    {
        OnTokenValidated = ctx =>
        {
            //query the database 
    
            var db = ctx.HttpContext.RequestServices.GetRequiredService<YourDbContext>();
    
            //perform custom logic for user management in local database
    
    
            return Task.CompletedTask;
        },
    };
    

    【讨论】:

    • 谢谢,我不知道我是怎么错过 OnTokenValidated 函数的,我使用了所有其他错误的函数。
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 2010-11-05
    • 2017-10-07
    • 2011-10-11
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多