我是Asp.net核心身份和Identity Server 4的新手。我正在关注使用Open Id Connect与asp.net核心和身份服务器4实现身份验证的在线培训课程。
如果我进一步说明我的解决方案,将Asp.net核心mvc Web应用程序作为客户端。另一个asp.net核心mvc web应用程序作为IDP(Identity Server4)和另一个asp.net核心mvc web api作为资源服务器。
对于IDP上未经过身份验证的用户登录页面正在出现。对我来说问题是客户端网站(asp.net核心网络应用程序)如何知道用户未经过身份验证?我的猜测是用户第一次访问Web应用程序访问令牌没有出现在授权标头上,因此身份验证中间件知道这不是身份验证请求和重定向请求到IDP是否正确?
然后用户重定向到帐户控制器的逻辑视图如何在IDP上配置重定向(我的意思是这里是如何完全重定向到帐户控制器登录页面)?
此外,RedirectUris(https://localhost:44326/signin-oidc)在IDP上配置的目的是什么。以及它是如何工作的
顺便说一下,我在这里使用授权代码流和IdentityServer4.Quickstart.UI AccountController来自那里。
要么你知道什么api需要身份验证,因此,如果你没有任何地方可用的令牌,你应该将用户重定向到oauth服务器。一旦这个重定向回您的应用程序,您将在URL中找到令牌(如果我的记忆力良好,则为其中的一个参数)。此令牌必须保存在内存中以供以后使用或在应用程序db(标准浏览器功能)中保存。然后,您可以使用您存储的令牌调用api。
如果您不知道api需要身份验证或令牌是否已过期,则无论如何都会调用api,然后您会收到403错误(未经授权)。任何403错误都应该使客户端应用程序决定在身份验证门户上重定向用户以获取新令牌。
当你使用代码流时,我想你必须开发一个react,angular或任何spa应用程序。所以我建议你使用oidc-client。它是一个javascript库,由开发身份服务器的同一个人开发。在处理oauth身份验证时,它使客户端的开发变得非常简单。
这里是完成/使用的过程和检查/变量的更详细描述:
仅供参考,如果其签名已由当时的身份验证服务器完成,则令牌中的任何内容都可以信任。该系统可以防止中间安全漏洞的人。含义:通过监视网络活动获得令牌的人,更改此令牌内的内容,以便他可以针对您的api服务器进行任何他想要的调用。将检测到此令牌中所做的任何更改,因为签名(某种加密哈希)将不再与新内容匹配。这个签名,如果每个人都可以使用公钥在世界上检查它,只有一层可以使用其私钥发出它:身份验证服务器。
我试图让它尽可能完整,但仍然可以理解为你声称的oauth新手。希望这可以帮助。