我正在研究IdentityServer 3的工作原理,但我仍然有些不理解。
总体概念对我来说是清楚的,但我仍然不确定如何在实际项目中实现它。
这是我正在尝试实现的基本示例:链接
我有一个Web API项目,我想从任何客户端(mvc,wpf,phone…)调用我的API方法。因此,我需要适用于所有客户端的实现。
如果我理解得好(可能我还没有完全理解),我应该有3个项目:
- 客户端
- API
- 托管IdentityServer的项目
所有项目都应具有像图片上所示的所需内容:
图片步骤:
- 获取令牌
- 返回令牌
- 调用API
- 检查令牌是否正确
- 如果令牌正常,则返回数据;否则显示错误
我的问题是:
- 我的思路正确吗?
- 我在哪里犯了错误?
- 这个示例对于我的情况是否足够好?我是否遗漏了重要信息?
- 我必须创建托管IdentityServer的项目,还是这只是为了示例代码而需要?
- IdentityServer托管项目必须是与API和客户端通信的控制台应用程序(如示例中所示),还是在实际世界中会以不同方式完成?
- 托管身份验证服务器项目是否应该知道客户端和用户?
- 除了托管身份验证服务器项目之外,是否应该有其他项目知道客户端和用户?
- 隐式流和混合流之间有什么区别,我在我的情况下需要什么以及为什么?
编辑:我认为我需要资源所有者流程(Resource Owner flow)。我假设资源是用户输入用户名和密码的视图。