使用IdentityServer4通过API进行用户身份验证

使用IdentityServer4通过API进行用户身份验证,identityserver4,Identityserver4,我正在研究IdentityServer4作为管理用户和API访问令牌的可能解决方案。有一点尚不清楚,即是否可以通过API调用提供身份验证,或者我们是否被迫使用由IdentityServer4托管的登录页面 关于移动应用程序中的用户体验,在应用程序中提供一个简单的登录屏幕总是比打开一个处理登录过程的网页更好 我们是被迫使用由IdentityServer4托管的登录/注册页面,还是可以通过API调用来处理该页面?从服务器读取,对服务器进行API调用就足够了。 在服务器端,将有一个使用Identity

我正在研究
IdentityServer4
作为管理用户和API访问令牌的可能解决方案。有一点尚不清楚,即是否可以通过API调用提供身份验证,或者我们是否被迫使用由
IdentityServer4
托管的登录页面

关于移动应用程序中的用户体验,在应用程序中提供一个简单的登录屏幕总是比打开一个处理登录过程的网页更好

我们是被迫使用由
IdentityServer4
托管的登录/注册页面,还是可以通过API调用来处理该页面?

从服务器读取,对服务器进行API调用就足够了。 在服务器端,将有一个使用IdentityServer框架开发的后端运行,这将处理登录/注册API调用

作为参考实现,您可以查看官方应用程序并检查网络调用。

从中读取对服务器的API调用就足够了。 在服务器端,将有一个使用IdentityServer框架开发的后端运行,这将处理登录/注册API调用


作为参考实施,您可以查看官方网站并检查网络呼叫。

登录应该发生在IdentityServer网站上,原因很简单,即客户端不能信任用户凭据

当用户登录IdentityServer网站时,客户端仍然不知道凭据。用户已通过身份验证或请求被拒绝

请注意,也不建议使用“良好用户体验”的嵌入式浏览器,因为这将要求用户在不安全的环境中输入凭据(可以捕获凭据),即使在显示IdentityServer网站时也是如此


为了获得用户体验,您可以使用客户端id和acr_值作为附加参数来自定义IdentityServer上的登录页面。

登录应发生在IdentityServer网站上,原因很简单,即无法信任客户端的用户凭据

当用户登录IdentityServer网站时,客户端仍然不知道凭据。用户已通过身份验证或请求被拒绝

请注意,也不建议使用“良好用户体验”的嵌入式浏览器,因为这将要求用户在不安全的环境中输入凭据(可以捕获凭据),即使在显示IdentityServer网站时也是如此


为了获得用户体验,您可以使用客户端id和acr_值作为附加参数来自定义IdentityServer上的登录页面。

如果您在api中托管IdentityServer,则无需重定向到IdentityServer。然而,很多时候人们喜欢将令牌服务器与API分开,因为拥有令牌服务器意味着您有多个应用程序,并且您只能有一个API可以托管令牌服务器,或者您也可以转发来自服务器的请求,只需在API中使用一个简单的登录页面。我感兴趣的场景是将
IdentityServer4
作为一个独立的应用程序,驻留在自己的域中,例如
login.mydomain.com
,这样它就可以服务于多个应用程序。我在我的一个应用程序中设置了类似的设置。您有几个选项,您可以为Identity Server提供一种方法来为您的登录页面设置模板,以便Identity Server上的主机与您的应用程序匹配,并且您可以为每个应用程序提供一个模板,并将其托管在IFrame中。或者,您可以转发用户名-密码凭据,让api为您获取oauth令牌,但这稍微破坏了oauth的安全模式,使用授权代码,您的密码的完整性仅绑定到identity server,但使用资源所有者授予方法,您的密码也将通过api。如果您在api中托管IdentityServer,则不必重定向到IdentityServer。然而,很多时候人们喜欢将令牌服务器与API分开,因为拥有令牌服务器意味着您有多个应用程序,并且您只能有一个API可以托管令牌服务器,或者您也可以转发来自服务器的请求,只需在API中使用一个简单的登录页面。我感兴趣的场景是将
IdentityServer4
作为一个独立的应用程序,驻留在自己的域中,例如
login.mydomain.com
,这样它就可以服务于多个应用程序。我在我的一个应用程序中设置了类似的设置。您有几个选项,您可以为Identity Server提供一种方法来为您的登录页面设置模板,以便Identity Server上的主机与您的应用程序匹配,并且您可以为每个应用程序提供一个模板,并将其托管在IFrame中。或者,您可以转发用户名-密码凭据,让api为您获取oauth令牌,但这稍微破坏了oauth的安全模式,使用授权代码,您的密码的完整性仅绑定到identity server,但使用资源所有者授予方法,您的密码也将通过api。让我感到不安和怀疑这是否可能的部分是工作流。下面是他们文档中的确切措辞:当IdentityServer在授权端点接收到请求且用户未经过身份验证时,用户将被重定向到配置的登录页面。您必须通过选项上的UserInteraction设置(默认值为/account/login)将登录页面的路径通知IdentityServer。因此,这看起来不像将用户名/密码对发送到
IdentityServer 4
上的API端点那么简单。首先似乎有一些重定向正在进行。让我感到困惑和怀疑这是否可能的部分是工作流。下面是他们文档中的确切措辞:当识别它时