我正在创建一个.NET类库,该类库将允许本地应用程序使用API访问在我的网站上注册的用户的帐户。我希望该库处理用户的所有身份验证,以便我创建的任何应用程序都可以简单地调用该库,并返回该API的令牌。我不确定如何进行身份验证。
我考虑过几种方法,但是它们并不理想。第一种是在库中简单地创建一个登录表单,该表单要求用户输入他们的登录名,然后调用API。第二种方法是在用户登录时创建一个网页,然后为其提供进入应用程序的令牌。
这种情况的理想方案是用户看不到其令牌,并且如果可能的话,将实际的登录过程委托给网站。以上两种方法都无法满足上述条件之一。
我要执行此操作的理想方法是从我使用的应用程序中汲取灵感的,如果用户未登录,则他们必须按下“登录”按钮,这将打开他们登录的网页。成功完成此操作后,应用程序会自动检测到此错误,并将它们登录到应用程序中。这种解决方案的缺点是我不知道自己该怎么做。
本质上,我要问的是,第三个解决方案是否可行,我该怎么做,或者如果没有,我会忽略任何更好的解决方案。
仅供参考,网站和API分别运行ASP.NET MVC和WebAPI,并且该库将使用.NET框架。
答案 0 :(得分:0)
编辑:
从下面的评论中,您似乎可能想使用OAuth之类的东西来实现身份验证提供程序。 .NET参考库可以是found here,而StackOverflow上已经有一个similar answer,这也可能会引起一些启发。
欢迎堆栈溢出!
就个人而言,我将Web API保留为对用户进行身份验证的权限,并且只要要验证用户的凭据,就可以在所有平台(Web,桌面,移动等)上使用此HTTP端点。
总的来说,该过程将遵循:
/authenticate
)。每个客户端现在将获得标准化的响应,可用于确定是否应将用户重定向到某个保护区域,或向他们显示错误消息。
这还使您可以设计其运行平台所固有的登录屏幕(这是更平滑的用户体验)。我不建议让图书馆将预建的登录页面返回给用户-您会发现这很难维护!
您提出的第三个解决方案也是一种有效的处理方式-但这确实具有将用户的注意力从他们正在使用的应用程序重定向到其他方面的副作用-您可能不希望根据使用情况而定。与直接调用API相比,实现起来还有些棘手,因此,除非您有特定的要求,否则不建议这样做。
希望这是有道理的。如果您不确定如何实现跨应用程序身份验证,则建议您查看一些有关Stack Overflow的现有答案,例如: