我正在使用 Identity Server 来实现公司应用程序的单点登录/退出。有没有什么方法可以使当客户端的 cookie 更新(通过滑动过期)时,它也会转到 IDP 并更新其会话 cookie 的过期时间?目标是即使在 IDP 会话应该过期之后,也能够在所有应用程序之间共享 1 小时的滑动过期时间。
我现在能想到实现此目的的唯一方法是创建一些中间件来检查客户端上的 cookie,如果它即将过期,则添加一个 iframe 来调用 IDP 上的端点,告诉它也更新它的 cookie。我走在正确的轨道上吗?Identity Server 中是否内置了类似的机制?如果有,端点是什么?
为了清楚起见编辑:
我有一个openidconnect注册的外部身份提供商Keycloak。当客户端应用程序尝试访问受保护的资源时,它会被重定向到KeyCloak登录页面。在登录页面上,我openidconnect启用了外部提供商按钮。一旦用户单击按钮,他就会被带到外部身份提供者(即identityserver3实例)。外部提供商对用户进行身份验证并发回代码。
现在,外部身份提供商中注册客户端的重定向 URL 是 keycloak 的重定向 URL。因此,在外部 IDP 身份验证成功后,它会将代码(因为它是身份验证代码流)发送回重定向 url 处的 keycloak:
在 URL 中,如果您看到它以endpoint. 我认为这是不正确的,但我无法在 KeyCloak 中更改它(它已被禁用),并且因此在外部 IDP 客户端配置中。
KeyCloak 无法理解上述 url,并出现错误并显示消息“使用身份提供程序进行身份验证时出现意外错误”
不应该KeyCloak理解代码流程并在收到代码后再次请求令牌。然后外部 IDP 将使用令牌进行响应,并将Keycloak该令牌发送回客户端(还将存储它以供将来使用)。
有人可以分享一些关于如何Keycloak通过代码流与外部 openidconnect ID 提供程序配合使用的知识吗?
我目前有一个Angular 2 SPA调用Web API。我正在使用使用Identity Server 3和 oidc-client-js javascript 库实现的安全令牌服务来提供使用 Web API 的身份验证和授权。
该协议是使用隐式流的OpenId Connect。
我根据这篇文章实现了静默令牌刷新。这是为了在调用 API 时始终拥有当前的 Access_Token。
为了在一段时间不活动后注销用户,我使用 JavaScript 计时器从 Oidc_Client_Js 库调用UserManager.signoutRedirect方法。
这是可行的,但我担心这可能会受到操纵,因为用户的会话是由客户端上的 Javascript 控制的。
我的问题是,是否有任何推荐的技术可以在使用 OpenId Connect 保护的单页应用程序上应用“滚动”自动注销?
尝试访问发现客户端以访问其他端点并遵循 http://docs.identityserver.io/en/aspnetcore1/endpoints/discovery.html
在 .Net 7.5 MVC 应用程序中安装了 IdentityModel nuget 包。但无法找到DiscoveryClient.
var discoveryClient = new DiscoveryClient("https://demo.identityserver.io");
var doc = await discoveryClient.GetAsync();
Run Code Online (Sandbox Code Playgroud)
有什么变化Identitymodel了IdentityServer4
此外,无法找到“Tokenclient”的参数。
我在IdentityServer中设置了以下客户端:
new Client
{
ClientName = "My web application",
Enabled = true,
ClientId = "mywebapp",
ClientSecrets = new List<ClientSecret>
{
new ClientSecret("somesecret")
},
Flow = Flows.Hybrid,
ClientUri = "https://app.mydomain.com",
RedirectUris = new List<string>
{
"oob://localhost/wpfclient",
"http://localhost:2672/",
"https://app.mydomain.com"
}
}
Run Code Online (Sandbox Code Playgroud)
我们说它是在线托管的https://auth.mydomain.com/core.
尝试修改MVC OWIN客户端(混合)示例客户端以登录到上述身份服务器,在Startup.cs我修改了ClientId,ClientSecret并RedirectUri匹配IdSrv中的客户端设置.现在,当我尝试导航到需要授权的页面时,我被重定向到IdentityServer的URL.当我登录时,断点AuthorizationCodeReceived在客户端的通知中命中,Startup.cs然后进入循环.浏览器的状态显示:
Waiting for localhost...
Waitnig for auth.mydomain.com...
Waiting for localhost...
Waitnig for auth.mydomain.com...
...
Run Code Online (Sandbox Code Playgroud)
等等,永远不会完成登录.为什么会这样?请帮忙.
谢谢!
在我的客户端应用程序成功验证IdentityServer3后,我无法在WebAPI控制器上获取用户信息.以下是步骤:

任何人都可以帮我提供一些如何在WebAPI上获取用户数据的帮助吗?
我们公司正在构建一个移动应用程序 (iOS),它需要使用IdentityServer与我们的 API 进行通信,该 API 由 OpenIdConnect/OAuth2 保护。
我的问题是,我现在使用的大多数应用程序都要求用户登录/注册一次,然后就不再登录/注册。
假设他们使用 OAuth2 令牌访问 API,他们如何实现这一目标?
OAuth 支持offline_access通过“刷新”令牌,这允许用户无需再次登录即可获取新令牌。但是,它们也有有效期 - 因此考虑到以下情况:
此时,访问令牌和刷新令牌都已过期。他们如何获得新的凭据,而不提示用户再次输入凭据?
我了解 OpenIdConnect 有身份令牌的概念,只要它在服务器上处于活动状态,就可以获取新的访问令牌,而无需再次提示用户。
所以,我只能想到应用程序执行此操作的两种方式:
2 似乎是可能的,但这仅适用于涉及 SSO/cookie 的基于浏览器的 OAuth 流(隐式授权代码)。
对于具有本机登录(应用程序中的 U/P)的应用程序,它们很可能使用资源所有者密码凭据流程,该流程不支持 SSO(无浏览器,无 cookie)。那么他们如何获得新的令牌,除非他们在客户端应用程序本身中存储可逆的用户名/密码,然后再次将它们传递到身份验证服务器以获取新的令牌?
我缺少什么?
提前致谢。
mobile access-token oauth-2.0 openid-connect identityserver3
我希望将IdentityServer3添加到当前使用标准实体框架,SQL Server,基于代码优先的方法来管理用户和角色的Web应用程序中.
我想添加IdentityServer3以使用Basic Auth,JWT和OAuth2保护新的Web API端点.他们的关键点是保持现有的用户体验(登录网址,cookie等)不受干扰.
我想尽可能地单独留下ASP.Net身份代码.
我的问题是,我需要执行哪些关键步骤,是否有相关样本?
似乎有大量的文档,但它相当复杂,我找不到这个确切场景的样本.
我的应用程序中有以下代码,比如 WebApp1:
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "IdentityServerPath",
RequiredScopes = new[] { "write", "role", "all_claims" },
ValidationMode = ValidationMode.Local,
});
Run Code Online (Sandbox Code Playgroud)
调用方/客户端应用程序将 JWT 令牌传递给 WebApp1。WebApp1 如何知道 JWT 令牌有效?WebApp1 需要知道 JWT 令牌的公钥吗?如果不是,WebApp1如何验证JWT的签名?请注意,我使用 ValidationMode 作为本地,因此 WebApp1 不会联系 IdentityServer 来验证 JWT 令牌。
我们使用的是IdentityServer3,隐式授权,登录包含多个屏幕.在IdentityServer3中,内置支持这种多步登录工作流程(例如,用于接受EULA,双因素登录等),该功能称为" 部分登录 ",甚至还有一个示例:https://github.com /IdentityServer/IdentityServer3.Samples/tree/master/source/CustomUserService/CustomUserService
我们最近升级到AspNetCore和IdentityServer4,并想知道如何实现相同的目标?也就是说,在第一步中检查用户名和密码,如果正确,则将其安全地存储(例如在加密的cookie中)以用于下一步骤.
login oauth-2.0 identityserver3 asp.net-core identityserver4
identityserver3 ×10
oauth-2.0 ×3
asp.net-mvc ×2
c# ×2
jwt ×2
access-token ×1
angular ×1
asp.net ×1
asp.net-core ×1
keycloak ×1
login ×1
logout ×1
mobile ×1
owin ×1