我有以下项目结构:
- Webapi(不同域)
- auth-server(不同域)
- Angular-Client(不同域)
Web API和Authserver都在.NET Core 2.0上,我使用IdentityServer4来生成安全令牌,我可以正确实现。我正在使用PostgreSQL DB来持续使用用户,令牌,客户端等的所有信息
当我想使用Angular客户端登录时,我的问题就会出现。我无法理解必须执行服务以实现登录方式的方式;我了解,向Angular客户端的用户,密码和数据发送auth-server是足够的,这样它将返回将其存储在本地存储中的令牌,然后将其用于Angular内部所需的所有内容客户,但我做不到。
身份服务器文档没有谈论如何做这种事情,事实是我有点沮丧。
使用OIDC-CLIENT库来制作路径,但这似乎不是我需要的,因为我不知道如何发送用户名和密码进行验证。
请,您能推荐我正确的工作流程,或者在任何情况下如何从Angular索取auth-server的令牌?
nora:我不添加代码,因为这是对概念的疑问,而不是对代码的疑问。
这将是oauth/oidc项中的隐式流。
遵循的示例是在QuickStart教程7中:https://indistityserver4.readthedocs.io/en/release/quickstarts/7_javascript_client.html
您需要将浏览器重定向到Auth Server的登录页面或使用POP窗口(加载Auth Server的登录页面)。
不应将用户名和密码输入到Angular应用中。Angular应用将在用户从身份服务器接收ID_Token和/或access_token后知道。
身份服务器4:
有一个令牌端点http://youridentityserverurl/connect/token
您可以通过form-urlencoded
如下:
POST /connect/token
CONTENT-TYPE application/x-www-form-urlencoded
client_id=client1&
client_secret=secret&
grant_type=authorization_code&
scope=hdh922&
username=username&
password=password&
它将返回您的access_token
和其他一些细节。
您可以参考此链接:https://indistityserver4.readthedocs.io/en/latest/endpoints/token.html#