如何为没有同意页面的用户创建身份验证服务器?

20
我们有一个内部应用程序,需要使用OAuth2/OIDC进行保护,考虑使用IdentityServer4。最终用户不会授权任何应用程序,因此不应该有任何同意页面。我找不到合适的示例,它们要么是带有同意页面的MVC客户端示例,要么是用于资源所有者密码流的控制台应用程序客户端。
唯一的事情是,我需要在IDSRV应用程序中实现IResourceOwnerPasswordValidator。这部分我可以做到。但我无法弄清楚如何在它们的启动中设置IDSRV应用程序和MVC应用程序。
我需要做什么才能使用Resource Owner Password流来保护.NET Core ASP.NET MVC应用程序并使用IdentityServer4?
我将非常感谢任何帮助。
解决方案:
我最终使用了混合流和手动用户登录,而不是使用资源所有者密码流。这是我创建的可行解决方案:

https://github.com/deastr/IdentityServer4.HybridFlow.NoConsent

1个回答

26
在“客户端定义”中添加以下内容。
RequireConsent = false,

我尝试了 AllowedGrantTypes = GrantTypes.ResourceOwnerPassword 和 RequireConsent = false,但是我没有被重定向,而是收到了 unauthorized_client 错误。将授权类型更改为 Implicit 可以解决问题,但即使 RequireConsent = false,我仍然会被重定向到同意页面。 - dstr
1
你尝试过打开日志记录吗?在我使用IdentityServer3的经验中,启用日志记录是解决这种“入门”问题最简单的方法。您可以让Identity Server记录非常详细的跟踪信息,它通常会为我解释这些问题。 - GlennSills
1
是的,将IdentityServer4主机作为控制台应用程序运行会显示各种日志,这对我帮助很大。我使用混合流和RequireConsent=false成功实现了我的目标。谢谢。 - dstr
@YahyaHussein 我记得我也有过和你一样的反应 :-) - GlennSills

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接