Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 要求经过身份验证的用户再次键入其凭据以访问某些安全功能_Asp.net Core_Identityserver4 - Fatal编程技术网

Asp.net core 要求经过身份验证的用户再次键入其凭据以访问某些安全功能

Asp.net core 要求经过身份验证的用户再次键入其凭据以访问某些安全功能,asp.net-core,identityserver4,Asp.net Core,Identityserver4,我是identity server 4的新手。我有一个.NET核心项目,其中一个业务需求是,经过身份验证的用户将被迫输入其凭据,以便向服务器提交某些类型的数据更改请求。与某些网站要求用户输入密码以访问帐户设置的方式类似,但每次向这些特定端点发出请求时都需要用户的用户名和密码 我想做的是让用户将他们的用户名和密码提交到.NET核心web API,然后通过后台通道将其发送到ID4服务器 如何配置此后台通道?我是否需要ID4服务器上的任何特殊中间件来检查用户名和密码?它当前设置为使用cookies。是

我是identity server 4的新手。我有一个.NET核心项目,其中一个业务需求是,经过身份验证的用户将被迫输入其凭据,以便向服务器提交某些类型的数据更改请求。与某些网站要求用户输入密码以访问帐户设置的方式类似,但每次向这些特定端点发出请求时都需要用户的用户名和密码

我想做的是让用户将他们的用户名和密码提交到.NET核心web API,然后通过后台通道将其发送到ID4服务器

如何配置此后台通道?我是否需要ID4服务器上的任何特殊中间件来检查用户名和密码?它当前设置为使用cookies。是否有任何有用的库供.NET Core将用户的登录凭据发送到ID4服务器,或者我必须手动设置HTTP请求?还是我想的不对


谢谢。

如果需要使用用户凭据将编程界面导入身份服务器4,您可以使用
ResourceOwnerCredentialsFlow
。因此,基本上,您需要在IDS4配置中将api项目设置为客户端,然后需要实现
IResourceOwnerPasswordValidator

更多信息请访问

然而,我确实认为你可能走错了方向。您希望实现的是,只要用户尝试访问一些特殊的MVC操作,您就会要求用户重新输入他们的凭据,基本上就是向他们挑战凭据。这应该可以通过以下方式实现:首先删除IDS4上的cookie身份验证(如果您确实希望用户始终重新输入其凭据),然后配置ASP.NET Core应用程序cookie身份验证方案,以便在用户尝试访问特殊MVC控制器操作时重定向到身份提供程序。我个人还没有尝试过这种方法,所以这部分答案纯粹是理论上的,但只要在谷歌上快速搜索一下这个主题,下面的链接可能也会对你有所帮助


如果需要使用用户凭据将编程界面导入身份服务器4,则可以使用
ResourceOwnerCredentialsFlow
。因此,基本上,您需要在IDS4配置中将api项目设置为客户端,然后需要实现
IResourceOwnerPasswordValidator

更多信息请访问

然而,我确实认为你可能走错了方向。您希望实现的是,只要用户尝试访问一些特殊的MVC操作,您就会要求用户重新输入他们的凭据,基本上就是向他们挑战凭据。这应该可以通过以下方式实现:首先删除IDS4上的cookie身份验证(如果您确实希望用户始终重新输入其凭据),然后配置ASP.NET Core应用程序cookie身份验证方案,以便在用户尝试访问特殊MVC控制器操作时重定向到身份提供程序。我个人还没有尝试过这种方法,所以这部分答案纯粹是理论上的,但只要在谷歌上快速搜索一下这个主题,下面的链接可能也会对你有所帮助


更进一步-使用
prompt=login
max\u age
参数和
auth\u time
声明是您需要的组合。然后,在允许更改某些内容之前,您可以在客户端应用程序中强制执行
auth_time
声明在给定窗口内(比如5分钟)。除此之外,使用
prompt=login
max_age
参数和
auth_time
声明是您需要的组合。然后,在允许更改某些内容之前,您可以在客户端应用程序中强制执行
auth_time
声明在给定窗口内(比如5分钟)。向客户端/API公开凭据不会提高安全性,事实上恰恰相反。此外,重新输入凭据并不保证这是实际用户。相反,我会实施一个额外的步骤,比如发送一个链接到已知的电子邮件地址或短信代码。我知道,但这些是要求。业务需求甚至不要求身份验证用户是登录用户——只要用户名和密码有效。他们只是想确保访问API这一部分的人知道他们在做什么。与其说是认证,不如说是签署一个动作。这有点奇怪。如果经过身份验证的用户正在使用其他人的凭据,那么这将是一个危险信号。但是,如果用户是否是经过身份验证的用户无关紧要,那么就不要为此使用IdentityServer。您可以通过输入(注册用户的)电子邮件地址并单击链接获得访问权限来完成相同的操作。我不明白为什么这不能满足业务需求。不同的行业有独特的业务需求。对我们来说,它是一个在组织内部使用的终端,有人登录,但其他人可能会使用它。但是,为了提交某些表单,当前用户必须通过输入其凭据“签署”其更改。密码检查是客户端明确的业务要求。向客户端/API公开凭据不会提高安全性,事实上恰恰相反。此外,重新输入凭据并不保证这是实际用户。相反,我会实施一个额外的步骤,比如发送一个链接到已知的电子邮件地址或短信代码。我知道,但这些是要求。业务需求甚至不要求身份验证用户是登录用户——只要用户名和密码有效。他们只是想让苏