身份服务器 3 Authentication/Authorization
Identity Server 3 Authentication/Authorization
我负责实施允许移动应用程序连接到网络的解决方案 API。我找到了 IdentityServer3 并开始使用它。我对此还是很陌生,无法理解一些事情:
- 如何允许用户登录服务器?流程是什么?
我找到了以下文章,其中讨论了执行授权的端点和可以使用的各种参数,但不太确定如何对用户进行身份验证。我的目标是让 identityserver3 进行身份验证,return 一个令牌,并允许移动应用程序客户端使用该令牌访问网络 API.
https://identityserver.github.io/Documentation/docsv2/endpoints/authorization.html
GET /connect/authorize?client_id=client1&scope=openid email api1&response_type=id_token token&redirect_uri=https://myapp/callback&state=abc&nonce=xyz
- 我注意到有几个示例说明如何实际设置身份服务器。我已经完成了每一个的演练,但在理解各种 OAuth 2.0 想法时遇到了困难:
a.) 如果我的用户是移动应用程序,我是否应该允许他们使用资源所有者流程?
b.) 如果我希望我的用户只能使用用户名和密码登录,我是否应该允许他们使用其他流程?
- 如何完成 2.a?
谢谢。
编辑:
我搜索过堆栈溢出、Identity Server 3,我不确定 OAuth 2.0 流程应该如何工作...老实说,我研究过教科书,最初只是打算在没有 IdentityServer3 的情况下执行上述操作完全没有,但经过更多研究,我发现保护 Web api 的正确方法是使用 Open ID Connect 正确执行身份验证,因为 OAuth 2.0 仅执行授权,这就是我首先选择 IdentityServer3 的原因.我不完全理解 OAuth 2.0 和 Identity Server 3(我对 SO 还是陌生的,所以请耐心等待)所以如果我的问题缺少信息或者看起来我只是懒惰,请随时 post它在评论中,我将为您提供我在这方面的一些工作。
1.
要将 Identity Server 用作您的身份提供者 (IP),首先您需要将其托管为一项服务。托管后,您必须将您的移动应用程序注册为该服务的客户端。当用户访问您的网站API时,他将被重定向到IP进行身份验证。一旦用户通过身份验证,IP 将颁发一个代表该用户的身份令牌。此令牌将发布到您的网站 API 以证明身份验证。简而言之,这应该发生。
当您必须为您的网站验证用户时,涉及多个步骤 API。 Here 是关于如何将 Identity Server 与 MVC 客户端一起使用的视频。除了 MVC 客户端之外,其余过程是相同的。
2
a:
授权代码流是一个不错的选择,而隐式流是移动应用程序的最佳选择(取决于要求)。
授权代码流程(来自 OAuth 2.0 规范):
授权码是通过使用**授权服务器(身份服务器)**作为客户端(移动应用程序)和资源之间的中介获得的所有者(您的应用程序的用户)。客户端不是直接向资源所有者请求授权,而是通过其 user-agent(浏览器) 将资源所有者定向到授权服务器,后者又将资源所有者定向回客户端使用授权码。
在使用授权码将资源所有者引导回客户端之前,授权服务器对资源所有者进行身份验证(通过显示登录屏幕)并获得授权。因为资源所有者仅通过授权服务器进行身份验证,资源所有者的凭据永远不会与客户端共享。
授权代码提供了一些重要的安全优势,例如能够对客户端进行身份验证,以及将访问令牌直接传输到客户端而无需通过资源所有者的用户代理并可能暴露它给其他人,包括资源所有者。
这些步骤大部分都是由Identity Server实现的,你只需要弄清楚如何托管、如何注册客户端以及如何对用户进行身份验证。身份服务器甚至提供简单的登录屏幕。
如有任何问题,请告诉我。
谢谢,
索玛.
我负责实施允许移动应用程序连接到网络的解决方案 API。我找到了 IdentityServer3 并开始使用它。我对此还是很陌生,无法理解一些事情:
- 如何允许用户登录服务器?流程是什么? 我找到了以下文章,其中讨论了执行授权的端点和可以使用的各种参数,但不太确定如何对用户进行身份验证。我的目标是让 identityserver3 进行身份验证,return 一个令牌,并允许移动应用程序客户端使用该令牌访问网络 API.
https://identityserver.github.io/Documentation/docsv2/endpoints/authorization.html
GET /connect/authorize?client_id=client1&scope=openid email api1&response_type=id_token token&redirect_uri=https://myapp/callback&state=abc&nonce=xyz
- 我注意到有几个示例说明如何实际设置身份服务器。我已经完成了每一个的演练,但在理解各种 OAuth 2.0 想法时遇到了困难:
a.) 如果我的用户是移动应用程序,我是否应该允许他们使用资源所有者流程? b.) 如果我希望我的用户只能使用用户名和密码登录,我是否应该允许他们使用其他流程?
- 如何完成 2.a?
谢谢。
编辑:
我搜索过堆栈溢出、Identity Server 3,我不确定 OAuth 2.0 流程应该如何工作...老实说,我研究过教科书,最初只是打算在没有 IdentityServer3 的情况下执行上述操作完全没有,但经过更多研究,我发现保护 Web api 的正确方法是使用 Open ID Connect 正确执行身份验证,因为 OAuth 2.0 仅执行授权,这就是我首先选择 IdentityServer3 的原因.我不完全理解 OAuth 2.0 和 Identity Server 3(我对 SO 还是陌生的,所以请耐心等待)所以如果我的问题缺少信息或者看起来我只是懒惰,请随时 post它在评论中,我将为您提供我在这方面的一些工作。
1.
要将 Identity Server 用作您的身份提供者 (IP),首先您需要将其托管为一项服务。托管后,您必须将您的移动应用程序注册为该服务的客户端。当用户访问您的网站API时,他将被重定向到IP进行身份验证。一旦用户通过身份验证,IP 将颁发一个代表该用户的身份令牌。此令牌将发布到您的网站 API 以证明身份验证。简而言之,这应该发生。
当您必须为您的网站验证用户时,涉及多个步骤 API。 Here 是关于如何将 Identity Server 与 MVC 客户端一起使用的视频。除了 MVC 客户端之外,其余过程是相同的。
2
a:
授权代码流是一个不错的选择,而隐式流是移动应用程序的最佳选择(取决于要求)。
授权代码流程(来自 OAuth 2.0 规范):
授权码是通过使用**授权服务器(身份服务器)**作为客户端(移动应用程序)和资源之间的中介获得的所有者(您的应用程序的用户)。客户端不是直接向资源所有者请求授权,而是通过其 user-agent(浏览器) 将资源所有者定向到授权服务器,后者又将资源所有者定向回客户端使用授权码。
在使用授权码将资源所有者引导回客户端之前,授权服务器对资源所有者进行身份验证(通过显示登录屏幕)并获得授权。因为资源所有者仅通过授权服务器进行身份验证,资源所有者的凭据永远不会与客户端共享。
授权代码提供了一些重要的安全优势,例如能够对客户端进行身份验证,以及将访问令牌直接传输到客户端而无需通过资源所有者的用户代理并可能暴露它给其他人,包括资源所有者。
这些步骤大部分都是由Identity Server实现的,你只需要弄清楚如何托管、如何注册客户端以及如何对用户进行身份验证。身份服务器甚至提供简单的登录屏幕。
如有任何问题,请告诉我。
谢谢, 索玛.