我的任务是为客户创建一个面向服务的生态系统。整个事情将基于 REST 并内置在 ASP.NET 中,但我的问题与技术无关。我们希望有一个集中的身份验证服务,它发布环境中其他服务信任的 JWT 令牌和声明。
我的问题是 - Web 客户端(浏览器)请求的第一件事是什么?我见过的所有图表(我将尝试添加几个示例链接)看起来好像客户需要自我意识并意识到他们在制作第一个之前需要一个令牌对功能性 REST 服务的请求,这对我来说似乎很笨拙。
我希望它工作的方式是他们只是尝试访问受保护的资源,但是我的 REST 服务向他们询问用户/密码的请求没有身份验证令牌,然后将身份验证委托给我的身份验证服务。所以:
- 浏览器在 REST 服务上请求受限资源
- REST 服务返回 401
- 浏览器收集凭据,发送到相同的 Web 服务
- REST 服务连接到身份验证服务,传递来自客户端请求的 Auth 标头
- Auth 服务创建 JWT 令牌并将其返回给 REST 服务
- REST 服务验证 JWT 并将 Auth 标头替换为 JWT 令牌
- JWT 令牌为后续请求保留,直到 expy 设置
......我完全不在乎这个吗?Web 客户端是否需要知道涉及到一个单独的身份验证服务并在那里发出一个请求以获取他们的 JWT,然后对通过 JWT 的 REST 资源发出第二个请求?这对我来说似乎很笨拙,我希望不是这个想法。
此外,另一个 n00b 问题 - JWT 令牌是否由 Web 客户端自动保存并随每个请求重新发送,因此我不必每次都通过身份验证服务步骤?这就是过期设置的目的吗?
TIA。
有关我的意思的示例,请参见此处的图 1:http: //msdn.microsoft.com/en-us/library/hh446531.aspx