我负责实施允许移动应用连接到网络API的解决方案。我找到了IdentityServer3并开始使用它。我还是很陌生,我很难理解一些事情:
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
a。)如果我的用户是移动应用,我应该允许我的用户使用资源所有者流吗? b。)如果我希望他们能够做的只是使用用户名和密码登录,我是否应该允许我的用户使用其他流程?
感谢。
编辑:
我已经扫描了堆栈溢出,Identity Server 3和我不确定OAuth 2.0流程应该如何工作......说实话,我已经研究过教科书而且最初只是要做以上没有IdentityServer3,但经过更多的研究,我发现保护web api的正确方法是使用Open ID Connect正确执行身份验证,因为OAuth 2.0只执行授权,这就是我首先选择IdentityServer3的原因。 。我不完全理解OAuth 2.0和Identity Server 3(我还是新手,所以请耐心等待我)所以如果我的问题缺少信息或看起来我只是懒惰,请随时发布评论和我将为您提供我在这方面的一些工作。
答案 0 :(得分:1)
<强> 1 强>
要将Identity Server用作身份提供程序(IP),首先需要将其作为服务托管。托管后,您必须在此服务上注册您的移动应用程序作为客户端。当用户访问您的Web API时,他将被重定向到IP进行身份验证。一旦用户通过身份验证,IP将发出代表用户的身份令牌。此令牌将发布到您的Web API以证明身份验证。简而言之,这应该发生什么。
必须为Web API的用户进行身份验证时,需要执行多个步骤。 Here是关于如何将Identity Server与MVC客户端一起使用的视频。除MVC客户端外,其余过程都是相同的。
<强> 2 强>
<强>一个强>:
授权代码流是一个不错的选择,隐式流是移动应用程序的最佳选择(取决于要求)。
授权代码流程(来自OAuth 2.0规范):
授权代码是通过**授权服务器(身份服务器)**作为客户端(移动应用程序)和资源所有者(应用程序用户)之间的中介获得的即可。客户端不是直接从资源所有者请求授权,而是通过其用户代理(浏览器)将资源所有者定向到授权服务器,然后使用授权将资源所有者引导回客户端。代码。
在使用授权代码将资源所有者指回客户端之前,授权服务器会对资源所有者进行身份验证(通过显示登录屏幕)并获取授权。由于资源所有者仅对授权服务器进行身份验证,因此永远不会与客户端共享资源所有者的凭据。
授权代码提供了一些重要的安全优势,例如对客户端进行身份验证的能力,以及直接向客户端传输访问令牌而不将其传递给资源所有者的用户代理并可能将其暴露给客户端其他人,包括资源所有者。
这些步骤中的大多数都是由Identity Server实现的,您需要弄清楚主机是如何注册客户端以及如何对用户进行身份验证的。即使是简单的登录屏幕也是由身份服务器提供的。
如果您有任何疑问,请与我们联系。
谢谢你, 索马。