我在SQL中拥有本地用户帐户的Idsvr3。此外,我还使用配置了支持SAML2的外部标识提供程序https://github.com/Sustainsys/Saml2我在这里跟踪了样本
现在,当用户访问客户端应用程序时,他会被重定向到登录页面,该页面显示用于本地登录的用户ID/密码文本框,以及重定向到外部供应商的按钮。
我想改变这种行为。我希望用户直接转到外部登录基于某些条件。我已经读到,我可以将所需的登录提供程序传递给acr\U值,IdSvr3将直接转到外部提供程序。
下面是我如何向IdSvr3注册外部提供程序的(请注意,为了简洁起见,删除了一些代码)
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/identity", idsrvApp =>
{
var identityServerOptions = new IdentityServerOptions
{
AuthenticationOptions = new AuthenticationOptions()
{
}
.Configure(ConfigureIdentityProviders),
};
idsrvApp.UseIdentityServer(identityServerOptions);
});
}
private void ConfigureIdentityProviders(IAppBuilder app, string signInAsType)
{
// SAML2
var options = new Saml2AuthenticationOptions(false)
{
SPOptions = new SPOptions
{
EntityId = new EntityId("https://localhost:44300/IdSrv3/Saml2"),
},
SignInAsAuthenticationType = signInAsType,
Caption = "SAML2p"
};
UseIdSrv3LogoutOnFederatedLogout(app, options);
options.SPOptions.ServiceCertificates.Add(new X509Certificate2(
AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "/App_Data/Sustainsys.Saml2.Tests.pfx"));
options.IdentityProviders.Add(new IdentityProvider(
new EntityId("https://stubidp.sustainsys.com/Metadata"),
options.SPOptions)
{
LoadMetadata = true
});
app.UseSaml2Authentication(options);
}
}
下面是客户端应用程序启动
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(CK);
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = "https://localhost:44300/identity",
Scope = "openid profile email",
ClientId = "XXXXXXXXXXXXXXX",
RedirectUri = "http://localhost:36102/",
ResponseType = "id_token",
SignInAsAuthenticationType = "Cookies",
Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = (n) =>
{
if (n.ProtocolMessage.RequestType == OpenIdConnectRequestType.AuthenticationRequest)
{
if(SomeCondition == true)
{
n.ProtocolMessage.AcrValues = "idp:saml2";
}
}
return Task.FromResult(0);
}
}
});
}
}
但是,identity server引发错误外部登录错误:提供程序请求的saml2不是配置的外部提供程序
Sustainsys/Saml2提供程序的有效名称是什么?在哪里配置?
我想我找到了。idp实际上是AuthenticationType属性的值。在IdentityServer3中设置外部提供程序期间,默认情况下,Saml2AuthenticationOptions将AuthenticationType设置为Saml2。因此,在客户端应用程序中,我必须使用与acr值完全相同的值,它区分大小写。我用的是小写字母,而不是大写字母。当我更改为Saml2时,它工作了。
我还可以将AutheticationType覆盖到我想要的任何字符串,这很好,因为现在我可以设置多个支持SAML2协议的外部IdP并通过它们的AutheticationType来区分它们
我还发现这个文档很有帮助https://media.readthedocs.org/pdf/saml2/latest/saml2.pdf
在第2.5.4节第3步:使用新的身份提供程序配置您的身份服务器中,查看okta是如何配置IdentityServer3的
还可以从IdentityServer文档中获得
AuthenticationType必须是唯一的值才能标识外部身份提供程序。该值还将用于生成的令牌中的idp声明。此外,在使用acr\u values参数的授权/身份验证请求期间,可以使用相同的值预先选择身份提供者(有关更多信息,请参阅此)。此值还用于限制客户端配置上允许的标识提供程序。
我正试图在应用程序处于退出状态时从firebase保存一个通知到redux。 但是我需要在app.js中这样做,当我甚至不在组件上时,我如何分派redux操作呢? 这就是我要做的
PS:KeyCloak 7.0.1 windows10
我有两个密钥保护实例,A 是 B 的 IdP。从B的登录屏幕中,这按预期工作。但是,我无法让 IDP 启动的 SSO 从 A 到 B 工作。我在 A 中用一个名称(比如“bbbbb”)填充了“IDP 启动的 SSO URL 名称”字段。当我尝试导航到:http://aaaaa/auth/realms/his/protocol/saml/clients/bbbbb 我总是以以下日志记录结束: 22:
我正在使用Firebase匿名登录制作一个Flutter应用程序(稍后我将添加其他登录方法)。我想创建流和提供程序,以便如果用户点击“登录”按钮,它会将用户带到Home(),如果用户点击Home()中的“注销”按钮,则会将其带到Login()页面。 我还想为应用程序重新启动执行此操作,例如当用户之前登录时,应将用户直接带到Home()页面而不是Login()。 我对这一切有非常基本的了解。在这里,
问题内容: 我当然缺少有关喷油器的一些基本知识,但是我无法理解为什么 还有这个 按预期工作,而这 会抛出 错误:[$ injector:unpr]未知提供程序:$ provideProvider <-$ provide 如下所述,与提供者有一些特殊的关系,而与实例打交道时,我不确定使块如此特别的东西。 结果,是否没有办法到达外部块,例如,使用(尽管似乎也获得了提供者实例)? 除了好奇心外,这个问题
这就是我如何注册我的应用程序来接收位置更新: 我悬而未决的意图几乎在所要求的时间间隔内被后台调用... 到目前为止还好。 问题:当WIFI被禁用/没有连接到任何网络,或者当没有3G/4G网络数据启用-融合位置提供商没有提供新的位置更新!! 我的位置访问设置打开,并检查GPS卫星和WI-FI和移动网络位置。 更大的问题是:有时在这种情况下,我确实通过挂起的意图接收位置更新回调,但它知道最后的位置(即