我在ASP.NET Core中有3个项目的解决方案:
我设法在内存客户端,用户,资源之后使用https://identityserver4.readthedocs.io/上的精彩文档,在所有三个应用之间获得授权和身份验证。
目前,我正在使用 HybridAndClientCredentials 流程,该流程适用于现有用户和注册用户。新注册的用户使用ASP.NET标识表保存在IdentityServer DB中。
我的一个客户要求规定,用户应在MVC应用中具有个人资料页,用户在获得授权后应将其重定向到该用户页面。认证成功。
我现在正在做的是在MVC应用程序中调用API,OnTickedReceived事件,以及在API DB中创建用户的初始声明,但我怀疑这是正确的实现。
由于注册已在IdentityServer级别完成并保留,并且有关用户的一些数据存储在那里,我是否应该在那里创建配置文件页面,或者我是否应该在注册流程中的某个位置调用API来创建用户还有API DB,然后将用户重定向到MVC应用程序以输入完整配置文件所需的其余详细信息?
另一项要求规定,用户应该能够授予对其他用户详细信息的读/写访问权限(如链接帐户或其他内容)。
答案 0 :(得分:2)
不幸的是,"它取决于"。
让我们首先询问"什么是个人资料页面?"。配置文件页面上的信息是特定于您的应用程序(MVC / WebApi)或身份管理系统的信息。
IdentityServer支持使用ASP.NET标识的OIDC UserInfo端点和配置文件范围,以便可以正常工作。 (http://openid.net/specs/openid-connect-core-1_0.html#UserInfo)。您可以将IdentityClaims插入到AspNetUserClaims表中,并在调用UserInfo端点时将其返回。
但是,要求中提到的此个人资料页面可能只是属于应用程序域的信息,因此身份管理系统中没有业务。然后,你当前的方法是可以的 - 虽然你可以使用过滤器属性而不是认证事件(这只是一个想法,可能不会更好)。
对我来说,决定是谁拥有这个所谓的"简介"信息。它是身份管理系统还是您的业务应用程序。
如果可以在身份管理系统的任何客户端共享配置文件信息,则将其放入身份管理系统。