Open Id Connect回调未达到断点

问题描述 投票:0回答:1

我正在使用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个回答
0
投票

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

根据您的要求,您可以在OIDC OWIN Middlerware中使用通知事件,该事件被调用以使开发人员能够添加自定义逻辑。例如,您可以查询数据库并在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;
    },
};
© www.soinside.com 2019 - 2024. All rights reserved.