我将IdentityServer4与Asp.Net标识一起使用。我需要实现一个听起来很简单的自定义标识存储,但是我看到的所有示例都使用EntityFramework核心,而我没有使用它
也许还有另一种使用自定义用户存储的方法。有谁能给我举一个使用IdentityServer4的自定义凭证存储的例子。基本上,它归结为实现一个IProfileService和一个IResourceOwnerPasswordValidator,并向config builder注册实现
这篇博客文章展示了这一点的简洁实现
我已经创建了一个自定义返回url解析器来确定哪个租户正在调用登录页面,但是当加载登录页面时,我在其中一个返回url解析器上得到一个空引用
在C:\local\identity\server4\IdentityServer4\src\IdentityServer4\Services\ReturnUrlParser.ParseAsync(字符串returnUrl)中的IdentityServer4.Services.ReturnUrlParser.ParseAsync处:第38行
在C:\local
我目前正在使用Angular和.NET Core进行身份验证和授权。从我在SO上以及IdentityServer和Auth0文档上的各种帖子中读到的内容来看,刷新令牌不应与SPA一起使用-我理解其原因,这里不需要解释
我不明白的是,为什么窃取刷新令牌与窃取cookie有什么不同?浏览器支持一些选项(SameSite,HttpOnly),这使得窃取cookie变得很困难。存储在浏览器中的令牌目前没有这种保护。简单地说就是这样。你可以找到更深入的比较
我正在考虑构建一个实现IdentityServerIResourceStore接口的类。我的目标是为自定义存储库中定义的IdentityResource和ApiResource集合提供服务
理想情况下,我将接收对这些资源的请求,并使用与查询相关的子集进行响应。简言之:你只得到你想要的
GetAllResources()方法让我怀疑:IdentityServer是否真的要求我从存储库中提取整个身份和API资源集并使其可用?目前,我不知道这些集合将增长多大,也不知道从存储库中提取它们的成本
简单地使
我想在数据库中存储PersistedGrants,以便Azure向外扩展
我更喜欢从appsettings.json而不是从数据库中读取IdentityResources/apirources/Clients(Config)
从示例中可以看出,这两种方法都可以持久化到数据库
是否可以在存储授权时不将配置数据加载到数据库中?如果是,怎么做
这项工作:
services.AddIdentityServer((options) =>
{
o
我有一个web应用程序(SPA),当请求注销时,用户同时传递访问令牌和刷新令牌
注销终结点受到保护,因此被吊销的访问令牌必须与经过身份验证的令牌相匹配
但是,我如何验证被请求撤销的刷新令牌是否是该用户的刷新令牌,或者在某种程度上与该访问令牌存在关系
注意:当撤销访问令牌或刷新令牌时,我会专门撤销请求的内容
最终目标是阻止恶意用户撤销属于其他人的刷新令牌
我知道这种可能性很小,但我的问题仍然存在。您可以将注入到注销端点所在的类中,使用IRefreshTokenStore的GetRefreshTok
我已经设法让我的IS4与Google web应用程序身份验证一起工作
services.AddAuthentication()
.AddGoogle("Google", o =>
{
o.SignInScheme = IdentityServer4.IdentityServerConstants.ExternalCookieAuthenticationScheme;
o.ClientId =
我正试图强制使用ASP.Net标识的Identity Server 4(V2.1.1)在一段时间后重定向到登录页面。我已将每个令牌生存期/超时时间设置为1分钟,即使考虑到5分钟的偏差,Identity Server也会自动对用户进行重新身份验证(即不需要登录页面)
这是相关的代码
IdentityServer Startup.cs:
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFramewor
我已经为Angular应用程序设置了Identity server 4,该应用程序将与WebAPI交互
Identityserver应该与混合流一起使用以获取令牌。
我有以下问题-
我的Angular应用程序的定义方式是,它支持具有类似子域的多租户
租户1.abc.com
租户2.abc.com
现在,由于angular应用程序是相同的,并且服务于多个租户,我如何在Identityserver上定义客户端,因为它有子域,并且Identityserver将无法匹配客户端重定向URI
和PostLo
问题:
我正试图帮助一位同事,他想从一个名为MyVBNet.dll的VB.NET dll中引用Thinktecture.IdentityModel.Client.Net45.dll。当我们运行引用MyVBNet.dll的可执行文件时,MyVBNet.dll尝试实例化Thinktecture对象会导致以下异常:
FileLoadException was unhandled by user code
An exception of type 'System.IO.FileLoadExcept
我正在使用Identity Server 4.0和Identity Core,我需要用户角色以及令牌响应
由于违反了OAuth2协议,这不是正确的概念,需要修改IS4的内部结构
但您可以通过以下方式实现获取角色:
-用户信息端点()
-访问令牌
对于最后一个变量,您应该覆盖配置文件服务(
例如:
public class MyProfileService : IProfileService
{
private readonly UserManager<User&g
我已经设法让Identity Server 4达到我需要授予应用程序我的许可的程度,可以说,但许可页面不会显示。这就是我得到的
This localhost page can’t be found No webpage was found for the web address: https://localhost:44361/consent?returnUrl=%2Fconnect%2Fauthorize%2Fconsent%3Fresponse_type%3Did_token%2520tok
在实现IS4时,我们希望在/Account/Login表单上有两个额外的字段(我们构建的是快速启动UI)。调用IProfileService时,需要访问这些字段(位置信息-1)建筑物和2)建筑物内的站点)提供的数据,因为它们是用于确定在GetProfileDataAsync()中提供的声明的信息。我们尝试将数据存储在HttpContext.Items中,但该数据丢失,因为在调用IProfileService之前发生了重定向
对于如何将此数据传递回IProfileService,您有什么建议吗?H
我想被重定向到我目前无法实现的IDP登录页面,我需要帮助了解我做错了什么
另外,我是IT大学的第三学期,这是我第一次使用IndettyServer4,我希望在我未来的所有应用程序中使用它,感谢您的耐心。如果您正在寻找signout-redirect.js:
window.addEventListener("load", function () {
var a = document.querySelector("a.PostLogoutRedirectUri");
if (a) {
当我刷新令牌时,旧的一瞬间无效。对的
我能改变这种行为吗?我可以定义旧令牌在30秒内保持有效吗?重叠单次使用刷新令牌不是现成的,但是刷新令牌行为可以通过客户端上的refreshttokenusage属性进行配置。一次性使用模式意味着旧令牌将立即失效,并在响应中返回新令牌。如果允许令牌重复使用,则可以使用相同的令牌,直到其过期
标签: Identityserver4
role-base-authorizationrole-based-access-controlclientcredential
我刚从Identity Server 4开始
我正在尝试使用客户端凭据授予类型保护API
我在IS4中有一个API设置:
public static IEnumerable<ApiResource> Apis =>
new List<ApiResource>
{
new ApiResource("myapi", "Test API")
{
Api
我们正在规划我们的API解决方案,为此,我们将IdentityServer4作为我们的安全解决方案。我在这个领域是全新的,需要有人给我指出正确的方向
我们的API将在.Net平台上构建和托管,API的用户都是我们的客户公司的程序,以Windows或web应用程序或他们自己的API的形式运行。其中一些API将调用我们的API作为其服务的一部分。其他一些应用程序将从应用程序内部将其用户重定向到我们的API
那么,如果我们使用IdentityServer4,我们如何规划/设计我们的身份解决方案呢?在阅
我希望有人能提出一种方法,使cypress登录命令与下面文章中的类似,与oidc客户端js一起工作
通常情况下,oidc客户机js在使用查询参数中的状态id重定向到IdentityServer之前,使用键oidc:将一些状态保存到localstorage
然后,当您在callback.html页面上调用UserManager().SignInDirectCallback()时,它会根据从IdentityServer返回的登录详细信息检查保存的状态
因为我的cypress测试只是直接发布到/co
我正在寻找有关在OpenIDConnect客户端中将收到的令牌存储在何处的建议
在OpenIDConnect客户端中,您始终可以将SaveTokens设置为true,以将所有令牌存储在cookie本身中。但缺点是,我们都知道,当您保留ID、访问和刷新令牌时,Cookie的大小会增加很多
我的问题是,你如何处理客户的代币?你把它们存放在别的地方吗?在数据库中?在记忆中?或者干脆把它们放在饼干里,和这么大的饼干一起生活
我的第二个问题是,是否有现成的代码/库将令牌保存在数据库或其他地方?我的主要问题
我有一个使用IdentityServer4 OAuth服务器保护的资源API
在我的资源API中,我使用
app.UseIdentityServerAuthentication(XXX)保护API
如果在资源API启动时身份验证服务器关闭,则对资源API的任何请求都会返回一个“500内部服务器错误”,这正是我所期望的。问题是,一旦身份验证服务器重新启动,资源API将继续返回“500内部服务器错误”
我希望,一旦身份验证服务器恢复联机,资源API就会开始工作。事实并非如此
有什么建议吗?日志怎么说
我的应用程序根据用户在登录时的选择连接到不同的数据库
在登录时,要求用户提供分区,我找到了在tokenClient.RequestResourceOwnerPasswordAsync方法中使用名为extra的对象参数将该分区id包含在令牌中的方法
现在,如果用户更改了分区,我想将令牌中的分区id替换为新的分区,而无需再次询问用户的凭据
这只不过是对代币中一项权利要求的改变
本质上,一旦创建了令牌,是否有任何方法可以在不再次请求用户凭据的情况下替换令牌中的声明
这是否可能使用延期补助金?如果不是,
标签: Identityserver4
x509certificateasp.net-core-3.1azure-app-service-envrmnt
我已将我的asp.net core 3.1应用程序配置为使用identity server 4。在我的本地机器和本地IIS中,一切正常。如果我发布到Azure应用程序服务,则证书加载将失败,并出现以下错误:
2020-04-05T02:01:46.200965138Z Documentation: http://aka.ms/webapp-linux
2020-04-05T02:01:46.200972938Z Dotnet quickstart: https://aka.ms/dotnet-q
我有一个API服务器和一个IdentityServer项目。API服务器使用OpenId和概要文件作用域执行授权代码流+PKCE。成功授权后,我希望将用户配置文件包含在user.Identity中。但是我找不到任何示例教程,也找不到任何方法来实现它。你所说的用户配置文件是什么意思?你所说的用户配置文件是什么意思?
我按照一个链接实现了谷歌SSO。但即使在成功登录之后,我仍然需要重定向身份验证属性中提到的uri。它无法访问回调url。有人能帮忙吗?我们的应用程序是一个.net core 3.1,带有IdentityServer 4。
我希望在谷歌登录后点击signinoauth2api,但这并没有发生
我可以看到一个来自浏览器的网络呼叫,格式如下,并且出现相关错误。
异常:关联失败。
显示原始异常详细信息
异常:处理远程登录时遇到错误。
Microsoft.AspNetCore.Authenticatio
我有以下密码规则:
services.Configure<IdentityOptions>(options =>
{
options.Password.RequiredLength = 8;
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
opt
我正在设置Identity Server 4,但没有得到作用域、API资源和标识资源之间的关系。我的理解是,API资源可以保存作用域集合,而Identity资源可以保存可能的声明
我调用/connect/token来获得一个JWT,它似乎只在我将范围定义为客户机属性时才使用它。而且,它似乎只返回我直接添加到客户端的声明
身份资源和API资源的用途是什么?身份资源的最佳定义是:
标识资源是可以使用scope参数请求的一组命名声明
API资源是一种对作用域进行分组的解决方案,它们也为我们提供了这些附
我有identity server 4安装程序和我的asp net核心应用程序。若您点击了一个安全端点,它将重定向到Identity Server,您可以登录。登录后,它会重定向回您最初尝试访问的url。我想做的是在重定向之前检查您是否已在我的数据库中注册。我以为我可以将“重定向URI”更改为我选择的url,但当我这样做时,它没有任何效果。该端点上的断点永远不会命中。设置post identity server登录注册屏幕需要做什么
这样做对吗
谢谢
Michael如果我正确理解您的问题,您希望
我在aspnetcore API服务(作为无状态服务在服务结构中运行)中设置了IdentityServer4,该服务使用Azure密钥库中生成并保存的签名证书。在Startup类中,我使用AddSigningCredential方法来设置初始签名证书,但我不确定在初始签名证书过期时使用新签名证书所需的步骤
我将密钥库配置为在前一个证书过期之前生成新证书,并在我的服务中运行后台进程,定期从密钥库检索证书,并检查它是否与IdentityServer当前使用的证书不同
我不知道如何设置新证书以供Ide
我已经玩了几个星期的blazor wasm asp.net core托管项目,昨天我在服务器端添加了几个控制器,一切正常(也登录了)。。今天回来,identity server刚刚停止登录??我可以通过swagger访问api(从而访问数据库),但当我进入identity的登录页面并与用户登录时,iis就会关闭。。没有日志,不知道为什么。我可以注册用户,除了登录,我几乎可以做任何事情
登录时,在调试日志控制台中看到的最后一件事是:
"Name": "Token
即使注册了AddDefaultIdentity,我也会遇到以下异常
System.InvalidOperationException: Service type: IUserClaimsPrincipalFactory`1 not registered.
这是身份注册码:
services.AddDefaultIdentity<ApplicationUser>(options =>
{
//Disable account
我有一个.NET核心身份提供程序(也使用IdentityServer 4),它使用Azure AD对SPA应用程序进行身份验证。我正在使用从Azure接收的对象标识符值添加一个“oid”声明。问题是,从SPA应用程序中,我可以在ID令牌中看到“oid”声明,但在访问令牌中看不到它。我还需要访问令牌中的oid。以下是相关代码:
Startup.cs
services.AddAuthentication()
.AddCookie("Cookies", options =&
有人能解释一下这两者的区别吗?我了解客户的秘密,但范围秘密仍然不清楚。。。以及为什么需要存在范围秘密
虽然我发现它在某些方面有所帮助,但在解释两者之间的区别时,我没有发现它有所帮助。客户端机密用于授权访问。此端点使用客户端id和客户端密码,并允许您请求访问令牌
作用域机密用于授权访问。此端点使用作用域id和作用域机密,因为只有访问令牌中包含的作用域才允许对其进行内省。多亏了Scott Brady,我才能够回答我的问题。这是我发现的
客户机密
正如Scott Brady所说,当客户端应用程序调用。
IdentityServer4的UserInfo端点是否应该返回我在ASPNetUserClaims表中针对给定用户的所有声明,或者我是否需要一些特殊配置来获取它们?现在,我只看到返回默认值,在我浪费大量时间尝试将其与自定义值一起使用之前,我希望确保我没有做错什么。更糟糕的情况是,我可以使用其他一些现有条目来存储我的数据质询问题和响应,但我更愿意使用这些名称来存储它们,而不是将它们存储在诸如中间名和昵称之类的字段中。例如,根据,调用方需要发送代表用户的有效访问令牌。根据授予的作用域,UserIn
在Identityserver3中,存在在AuthorizationInteractionResponseGenerator中创建的SigningMessage。但在IdentityServer4中,没有向我的登录操作传递任何重要消息
那么,我如何通过授权调用中给出的ui\u区域设置呢?我找到了答案。我需要在我的控制器中注入IIdentityServerInteractionService。然后在我的登录操作中,我可以获得如下授权上下文
var context = await _interact
我正在开发一个SPA应用程序,我正在使用推荐的隐式流,并且我能够获得access\u令牌和id\u令牌。由于我需要的不仅仅是配置文件信息,我已经创建了一个单独的端点来返回用户配置文件信息以及特定于我们业务的所有其他信息,该端点受到保护,并且只能使用访问令牌作为承载令牌进行访问。在SPA中获得access_令牌后,我立即调用该端点以获取所有用户信息,包括显示在UI上的名字、姓氏等。如果返回的id_令牌和access_令牌对存在任何问题,则用户配置文件信息端点调用将失败。那么,我真的需要验证id_令
客户端应用程序正在重定向到IdentityServer4实例-“/connect/authorize/callback”?客户端id=…”。
如果用户未登录(没有cookie),他将被重定向到登录页面,在回发时,我可以执行随机逻辑(将用户订阅到此客户端-使用客户端id将索赔添加到用户的索赔集合)
如果用户拥有有效的cookie,则没有登录屏幕,IdentityServer4将用户重定向回客户端应用程序,并在查询字符串中包含请求的令牌(同意被关闭)
发生此事件时,如何执行自定义代码?A“登录成功”
我们使用IdentityServer4(“”)和EntityFrameworkCore来存储操作和配置数据。要添加签名凭据,我们使用x509自签名证书。我们使用以下命令创建x509自签名证书:makecert-r-pe-n“CN=CertName_IdentityServer”-b 01/01/2015-e 01/01/2039-eku 1.3.6.1.5.7.3.3-sky签名-a sha256-len 2048 IdentityServer.cer。并将此证书作为嵌入源添加到解决方案中。
这
我有一个客户端,它可以从2个不同的资源访问2个作用域。每个范围都有自己的声明。但是,我注意到,来自两个作用域的所有声明都将返回给每个资源。如何确保只将与正确范围相关的声明返回到资源
以下是我在启动时的资源:
//I use IdentityServer3.AccessTokenRequest since my resource is a .net app
public void Configuration(IAppBuilder app)
{
app.UseIdentityServer
我有一个代理是openid客户端。
在代理服务器上,我配置了两个方案:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Bearer";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("C
我正在使用IdentityServer4和asp.netcore 2.2设置安全服务器。我想使用Azure AD进行身份验证,并使用Asp.Net IdentityCore保留我的用户数据。我已经使用AddMicrosoftAccount设置了外部身份验证。身份验证工作正常,但我总是收到“IdentityServer4.Validation.AuthorizationRequestValidator[0]重定向\u uri缺失或太长”。我已经调试了代码,并注意到返回url在querystring
我有一个PHP应用程序。我希望将AA集中在IdentityServer上。如何保护外部PHP web应用程序的API?您有两个选项。
1.将API配置为信任Identity server(不确定是否有任何Identity server库可用于PHP。您必须检查)
Identity server any way使用JWT令牌验证,因此您可以在PHP api中使用任何JWT令牌验证库,使用Identity server证书解密令牌(您可以从Identity server disco文档获取证书url
我正在web应用程序中创建用户身份验证,我想使用Identity Server保护资源
示例代码和文档显示了用户在为Identity Server创建帐户后如何登录该服务器。也就是说,他们使用自己的Identity Server帐户登录。quickstart甚至提供了一个UI
但我不希望我的应用程序的用户必须登录到Identity Server,一个外部网站。我希望他们只需要登录到web应用程序
那么如何进行呢?从文档中看,似乎根本不清楚您应该如何处理这个场景,我认为这是最常见的
我是否只使用预
假设我需要在同一子域中运行多个不同的IdentityServer实例,例如:
https://dev.mycompany.com/identityserverversion1
https://dev.mycompany.com/app1version1
https://dev.mycompany.com/app2version1
https://dev.mycompany.com/identityserverversion2
https://dev.mycompany.com/app1vers
我使用的Identity server 4的最低配置是内存中有客户端(JavaScript客户端)。
并使用oidc-client.js连接到ID4服务器,我遵循ID4提供的用于注销的示例
但在我们现有项目和注销中使用的同一个库无法从logoutId填充“PostLogoutRedirectUri”和“clientName”,因此注销后我们无法重定向回原始应用程序的页面
var config = {
authority: "https://lo
示例和种子数据显示在启动时创建新客户机。
在创建客户机的情况下,这很好。
是否有更新客户端的现有方法或规定。更新还涉及从客户机内的集合字段跟踪现有记录。
在更新过程中,考虑到数据库中已有记录,实体如何从IdentityServer4.Models映射到IdentityServer4.EntityFramework.entities?您说的客户端是什么意思??如果您指的是Identity server客户端,那么您可以在config类中编辑/配置或添加更多客户端或其他资源。启动时,identity
为IdentityServer4编写自己的IProfileService应用程序
正在尝试了解context.RequestedClaimTypes的操作方式
context.RequestedClaimTypes是否表示要返回的其他声明(除了“SUB”)或context.RequestedClaimTypes是否表示只返回请求的声明而不返回更多?RequestedClaimTypes是与客户端请求的范围相关联的声明类型的扁平列表
这就是客户期望得到的回报——你实际得到的回报取决于你
我需要同时使用Windows身份验证和基本身份验证运行IdentityServer 4。
现在,当我试图在未连接到ActiveDirectory的PC上登录到IdentityServer4时,浏览器会显示登录表单,我可以在其中填写ActiveDirectory凭据。
这没关系
但现在我需要处理这个表单上的单击取消按钮,并重定向到仅本地登录的HTML表单,在这里我可以使用凭证表单数据库登录(我使用.NET核心身份验证)。
现在,当我单击“取消”时,我被重定向到401错误站点。可以处理吗
我也遇到了
我有一个基于quickstart的MVC客户端访问API。我目前正试图通过以下EF Migrations quickstart示例,用SQL Server替换内存中的配置和数据。我所有的db表似乎都创建和填充得很好,但是当我运行客户端时,我得到了一个“InvalidOperationException:没有配置签名凭据”错误。我的用户id和密码没有更改,我看到IdentityServer在调试模式下加载预定义的用户信息。我还需要改变什么才能使它再次工作
这是我的IdentityServer的新配
在Blazor WebAssembly(hosted)with Authentication模板中,标题上的登录按钮为
<a href="authentication/login">Log in</a>
但是,在服务器上,登录页面位于:
/区域/标识/页面/帐户/登录(.cshtml)
注意:cshtml页面有@page指令,但没有指定roue
那么,系统如何将“身份验证/登录”解析为“/区域/身份/页面/帐户/登录”
<a href=&q
我在Sql server中内置了用户数据库,并根据应用程序的要求设置了许多列。如何在Identity server 4中使用此用户表?是否有任何git hub参考项目可以这样做?通过继承IdentityUser创建您自己的用户类。在那里,您可以添加自己的属性并覆盖现有属性(将它们映射到列名)
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
IsActive = tru
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 14 页