Chr*_*rda 5 azure-active-directory openid-connect identityserver4
我正在尝试在开发环境中将 Azure AD 设置为 IdentityServer4 的外部提供程序。谷歌和 Facebook 提供商已经成功连接。我被定向到 login.microsoft.com 上的登录页面,在那里我输入我的登录 ID 并选择一个 MS 帐户,然后它会将我定向到 login.live.com 作为一个空白页面 (404) 而不是重定向回我的 IdentityServer实例。
我尝试了很多东西,但没有运气。
是否需要在 Azure 中启用企业应用程序?
我错过了什么吗?
身份服务器 URL: http://localhost:5000
身份服务器 URL: http://localhost:47740
...
app.UseOpenIdConnectAuthentication(CreateAzureAdOptions(clientId, tenantId));
...
public static OpenIdConnectOptions CreateAzureAdOptions(string clientId, string tenentId)
{
return new OpenIdConnectOptions
{
DisplayName = "Azure Active Directory",
AuthenticationScheme = "Azure",
ClientId = clientId,
Authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", tenentId),
ResponseType = "id_token",
Scope = { "openid" },
SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,
AutomaticChallenge = true,
AutomaticAuthenticate = true,
RequireHttpsMetadata = false,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
}
};
}
Run Code Online (Sandbox Code Playgroud)
这可能与从 AAD 返回时的 url 大小有关。这实际上是404.15IIS 特定的状态代码。如果您有大量从外部身份提供商返回的声明(即个人资料图像 base64),那么您将始终达到 url 长度上限HTTP Error 404.15 - query url too long RSS。
IdenitityServer4 在文档中有一个主题,通过使用下面的分布式缓存来解决此问题。它位于“使用外部身份提供商登录 - 状态、URL 长度和 ISecureDataFormat”下
抽象的:
幸运的是,IdentityServer 为您提供了一个实现,由
IDistributedCacheDI 容器中注册的实现(例如,标准MemoryDistributedCache)支持。要使用IdentityServer提供的安全数据格式实现,只需AddOidcStateDataFormatterCache在配置DI时调用扩展方法即可IServiceCollection。如果未传递任何参数,则配置的所有 OpenID Connect 处理程序将使用 IdentityServer 提供的安全数据格式实现。
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |