我正在调查IdentityServer 3如何工作,我仍然有完全理解的问题。
一般来说,概念对我来说很清楚,但我仍然不确定如何在实际项目中实现这一点。
这是我尝试在我的案例中实施的基本示例:link
我有web api项目,我想从任何客户端调用我的api方法(mvc,wpf,phone ......) 所以我需要适合所有客户的实现。
如果我理解得很好(可能我完全不理解),我应该有3个项目:
我的问题是:
编辑: 我认为我需要Resource Owner flow。我将该资源用于查看用户输入用户名和密码的位置。
答案 0 :(得分:3)
您的基本流程是正确的,Identity Server充当您的授权服务器,您的客户端和Web API是分开的。
您应该在自己的项目中托管Identity Server,以确保它与可能引入安全问题的任何其他逻辑分开。如何托管它取决于您和您的用例。通常,您会看到它托管在IIS服务器上的ASP.NET项目中。
Identity Server必须了解客户端和用户才能对其进行身份验证。应该了解您的身份存储(用户)的唯一其他项目是涉及管理,用户注册等内容的任何应用程序。客户端存储只能由Identity Server使用。
可以使用Identity Server模板或引入自己的ViewService
来修改视图。有关详细信息,请参阅文档:https://identityserver.github.io/Documentation/docsv2/advanced/customizingViews.html
关于流程,资源所有者流程仅为OAuth,因此不会进行身份验证(登录页面),只有授权(服务器到服务器)。