IdentityServer4 从客户端应用程序注册

问题描述

我使用 IdentityServer4 和 .Net Core Identity 创建了一个 OAUth 服务器。它在大多数情况下运行良好。启动代码如下:

  public void ConfigureServices(IServiceCollection services)
  {

...
        services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
            options.DefaultChallengeScheme = "oidc";
        })
            .AddCookie("Cookies")
            .AddOpenIdConnect("oidc",options =>
            {
                options.Authority = Configuration["Settings:OAuthAddress"];
                options.ClientId = "razor_code";
                options.ClientSecret = Configuration["Settings:ClientSecret"];
                options.ResponseType = "id_token code";
                options.GetClaimsFromUserInfoEndpoint = true;
                options.Scope.Add("myapi");
                options.Scope.Add("offline_access");
                options.Scope.Add("email");
                options.Scope.Add("profile");
                options.Savetokens = true;

            });

        services.AddAuthorization();
...

    }

如果我在客户端站点页面上使用 [Authorize] 属性,它会自动用户发送到 OAUth 服务器进行登录。我想要做的是能够使用注册登录按钮来登录客户端应用程序。我通过创建一个登录页面来计算登录,如下所示:

[Authorize]
public class LoginModel : PageModel
{
    public IActionResult OnGetAsync()
    {
        
        return LocalRedirect("/");

    }
}

如果链接指向此页面,[Authorize] 属性将导致它触发 OAuth 服务器上的登录。有谁知道触发登录的更好方法?我的解决方案总是返回到站点的根页面。这样就可以了,因为这个应用程序的根页面是唯一没有 [Authorize] 属性页面。未来可能会改变。

我还希望注册链接也能正常工作。我发现这个 https://openid.net/specs/openid-connect-prompt-create-1_0.html 表明直接进入注册页面的能力至少在工作中。有谁知道如何使用 Microsoft.AspNetCore.Authentication.OpeIdConnect 做到这一点?

我知道这在技术上是两个问题,但我认为答案是相关的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)