我有一个想法,可以使用IdentityServer4并将其配置为使用外部提供程序或它自己的用户数据库。例如,如果通过.json文件配置了Azure AD,请使用它。如果没有可用的Azure AD,请使用自己的用户数据库。管理员可以根据某些设置条件来更改配置文件。
但是我不明白如何从IdentityServer .well-known/openid-configuration
内容中获取外部提供者信息
我已经启动了IdentityServer4.Samples \ Quickstarts \ 4_ImplicitFlowAuthenticationWithExternal \ src \ IdentityServer,并且似乎在访问http://localhost:5000/.well-known/openid-configuration
时没有外部提供程序信息。
但是http://localhost:5000/Account/Login
显示login password
文本框和OpenID connect
按钮。
Here is gist和示例源代码。这是openidconnect配置:
.AddOpenIdConnect("oidc", "OpenID Connect", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SignOutScheme = IdentityServerConstants.SignoutScheme;
options.SaveTokens = true;
options.Authority = "https://demo.identityserver.io/";
options.ClientId = "implicit";
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role"
};
});
启动IdentityServer后,我可以使用登录名和密码文本框和http://localhost:5000/Account/Login
按钮浏览OpenId Connect
页面。此按钮链接到http://localhost:5000/External/Challenge?provider=oidc
网址。
因此,每个用户都可以看到此外部提供程序按钮并用于登录。 但是服务(或创建客户端的开发人员)又如何将我的服务用作数据源呢?
是否可以将IdentityServer4配置为在发现页面输出中显示外部提供程序?
是否可以将IdentityServer4设置为外部身份提供商的透明代理?要使http://localhost:5000/connect/token
调用外部提供程序(如果已设置)还是使用本地用户数据库?