asp.net - 移动应用程序 Web API 身份验证

标签 asp.net oauth-2.0 asp.net-identity

我正在构建一个移动应用程序(以后也可能成为一个网络应用程序)。服务器端是一个 ASP.NET MVC + Web API 应用程序,我正在考虑如何实现该服务的用户管理和身份验证。

我应该如何在应用程序中实现注册/登录屏幕?提供 native 应用程序表单,它只会向服务发送 API 请求,或者最好是显示网络浏览器组件并显示网站的登录页面,然后提取 token 用户登录?我看到第一个选项对用户更友好,但第二个选项可以让我更改登录/注册页面(例如添加外部身份验证提供程序),而不会破坏应用程序的旧版本。

我的第二个问题是关于外部身份验证提供程序的。 ASP.NET Identity 对它们有很好的支持,并且很可能让用户使用 Facebook 或其他一些 OAuth2 提供程序进行注册。当我计划公开应用的 API 时,添加对外部身份验证提供商的支持是否有意义?为什么这不是一个好主意?

最佳答案

如果您相信您的用户会信任您来管理他们的密码,那么您的第一个选择是最好的。您对您的服务进行安全调用,让该服务生成不记名 token 作为结果。那将是一个匿名电话。我使用这个问题的答案让我走上这条路:

Get IPrincipal from OAuth Bearer Token in OWIN

如果您的用户不太可能用他们的凭据信任您,那么 WebView 和外部提供程序是一个不错的选择。您需要与支持“隐式授权流程”的提供商合作,因为您不想在移动设备上共享应用程序 clientid 和 client secret。这种方法涉及使用 Web View 登录,然后在响应的客户端 uri 片段上捕获 token 。我认为它在位置 header 上,但我面前没有可用的示例。就像是: https://your.domain.com/#access_token = 8473987927394723943294

您将在之后的每个 api 调用中传递该 token 。

祝你好运!

关于asp.net - 移动应用程序 Web API 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25809753/

相关文章:

javascript - ASP :LinkButton created via literal control will not fire code behind

c# - 为什么我的 GridView CommandField 中有一个有趣的 "block"?

django - 通过 React-Native 从 Django OauthToolkit 获取请求 token

javascript - Electron 的 OAuth 2.0 客户端密码

sql-server - Asp.net identity : Why the index is on GUID (nvarchar)? 使用 int 有什么好处/缺点?

c# - 更改正在验证的控件的边框或背景颜色?

c# - 在 ASP.NET 中使用 C# 的自定义验证器出现问题

php - guzzle NULL响应lumen php oauth2

asp.net-core - 如何处理 IdentityUser 更新并发失败?

asp.net - 使用 Identity Core 在 ASP.Net Core 2.1 中登录后立即添加重定向