【发布时间】:2021-06-22 10:23:12
【问题描述】:
编辑:
我部分回答了我的问题。对于那些好奇的人,数据库中有另一个名为ClientProperties 的表,您可以使用它来设置不在主客户端表上的其他属性。我这样做了,但我仍然有一个错误:
--------- 原始问题---------
我使用 EntityFramework 为我的配置和操作数据设置了 IdentityServer4。
我在登录应用程序时尝试允许 ajax 处理重定向时遇到了问题。我没有尝试对所有内容进行硬编码,而是尝试在 IDS4 中设置 CORS。
我正在阅读文档HERE。它谈到在客户端上设置AllowedCorsOrigins,以便身份服务器正确设置CORS。我遇到的问题是,在数据库中,客户端没有定义名为AllowedCorsOrigins 的列。事实上,openId model 上定义了很多缺失的列。
在我的身份服务器上,我的 DI 配置如下:
services.AddIdentity < IdentityUser, IdentityRole > ()
.AddUserManager < ApplicationUserManager < IdentityUser >> ()
.AddSignInManager < ApplicationSignInManager < IdentityUser >> ()
.AddEntityFrameworkStores < ApplicationDbContext > ();
services.AddIdentityServer()
.AddAspNetIdentity < IdentityUser > ()
.AddConfigurationStore(options => {
options.ConfigureDbContext = builder => builder.UseSqlServer(
configuration.GetConnectionString("IdentityConnection"),
opt => opt.MigrationsAssembly(startupName));
})
.AddOperationalStore(options => {
options.ConfigureDbContext = builder => builder.UseSqlServer(
configuration.GetConnectionString("IdentityConnection"),
opt => opt.MigrationsAssembly(startupName));
})
.AddProfileService < ApplicationProfileService < IdentityUser >> ()
.AddDeveloperSigningCredential();
在我的客户端上,DI 设置如下:
services.AddAuthentication(options => {
options.DefaultScheme = "cookie";
options.DefaultChallengeScheme = "oidc";
}).AddCookie("cookie")
.AddOpenIdConnect("oidc", options => {
options.Authority = appSettings.App.AuthorityUrl;
options.ClientId = appSettings.App.ClientId;
options.ClientSecret = appSettings.App.ClientSecret;
options.ResponseType = ResponseTypes.Code;
options.UsePkce = true;
options.ResponseMode = "query";
options.GetClaimsFromUserInfoEndpoint = true;
options.ClaimActions.MapJsonKey("role", "role", "role");
options.ClaimActions.MapJsonKey("nickname", "nickname", "nickname");
options.ClaimActions.MapJsonKey(JwtClaimTypes.Picture, JwtClaimTypes.Picture, JwtClaimTypes.Picture);
options.TokenValidationParameters.RoleClaimType = "role";
var test = options.ClaimActions;
options.Scope.Add(appSettings.App.Scopes[0]);
options.SaveTokens = true;
});
我无法确定应该在哪里定义AllowedCorsOrigins,因为我看到的所有示例都在内存示例中。我认为这个属性应该在客户端表的数据库中......
以下是我可以访问数据库中的哪些值:
【问题讨论】:
-
你用什么浏览器?您是否在 Chrome 上收到此错误?
-
@nahidf 我刚刚发现了这个问题,ajax 帖子不会让你做 302 重定向。我必须以不同的方式处理这个问题。
标签: c# entity-framework identityserver4 openid