问题描述
我使用 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 (将#修改为@)