我需要使用授权代码连接到我的 Identity Server 4。我已经使用隐式授权类型成功连接,但找不到授权代码的任何显式文档。
我的项目是在 ASP.NET Core 8 MVC 中。
这是我的Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
}).AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "https://test.identity.com/";
options.RequireHttpsMetadata = false;
options.ClientId = "test_auth";
options.ClientSecret = "secret";
options.SaveTokens = true;
options.CallbackPath = "/signin-oidc";
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
那么,我有两个问题。是否可以使用“Authorization_code”进行连接?
第二个问题:我看过很多文档,其中配置位于 Startup.ConfigureServices 文件中。我是否需要创建它,或者它已经存在于 .NET Core 8 中?
我尝试了很多 NuGet 包,但没有一个能很好地工作。
我的身份服务器出现错误:
但是,设置回调路径并不能解决问题。
问题源于我的身份服务器中的重定向 URI 属性,需要进行如下设置:
对于 openIdConnect 配置,如下所示:
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
}).AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://test.identityserver.com/";
options.RequireHttpsMetadata = false;
options.ClientId = "test_auth";
options.ClientSecret = "secret";
options.SaveTokens = true;
options.ResponseType = "code";
options.Scope.Add("openid");
options.Scope.Add("email");
options.Scope.Add("profile");
options.CallbackPath = "/signin-oidc";
});