我正在尝试使用asp.net web api创建一个休息服务,一切正常,但我现在遇到了如何处理身份验证。
我对从哪里开始有点困惑,这是我一直在想的。
我有一个休息api我正在开发包含许多资源,每个资源都需要用户注册,这样做的最佳动作是什么?我是否应该在每次调用服务时在标头中发送用户名和密码,以便我可以使用服务器进行身份验证
AuthorizationFilterAttribute
我应该至少加密它?我真的很想知道其他人在做什么,我知道有一个创建令牌的概念(我认为这将是短暂的),因此用户将进行身份验证,然后将收到一个令牌,然后这个令牌将被发送进一步调用该服务。我认为令牌需要短暂存在吗?那么当令牌到期时我该如何处理这个问题呢?
我还有一个用于注册新用户的资源,实际上唯一会调用它的是我的客户端(android,iphone)。我应该免费使用任何身份验证方法,或者使用硬编码密码或类似的东西,以便至少没有其他人可以注册新用户?请记住,该服务将在互联网上公开。
我真的很感激任何人对此有任何反馈。
我似乎无法找到正确的方法,我当然希望第一次尝试正确,所以我不必完全重构服务。
提前致谢
以下链接似乎涵盖了一些明智的DIY选项 http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/。 “基于公钥/私钥的代币”部分介绍了我过去曾经有效使用的方法,可能对您有所帮助。
目前虽然我正在使用 http://identityserver.codeplex.com/ 具有OAuth承载令牌的Thinktecture IdentityServer(“资源所有者密码凭证”授权类型)...我发现这是一组非常好的代码和示例,可让IOS客户端获取令牌并调用WebApi。
如果您真的必须保护您的注册屏幕,您可以使用设备上安装的客户端证书进行身份验证...再次,Thinktecture服务可以帮助您 https://identity.thinktecture.com/idsrv/docs/default.htm?RequestingatokenusingOAuth2.html。虽然注册过程是安全的 在使用nonce的电子邮件中激活/注册/密码重置链接的最佳做法是什么 例如电子邮件确认和激活等可以安全地公开访问 - 这完全取决于您的业务要求和所需的注册工作流程。
您至少应该使用传输级别安全SSL,但建议您使用邮件级安全性,例如加密任何令牌都是非常可取的 - OAuth规范对此有所说明 http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#mitigation。
关于到期令牌 - 我们倾向于以与我们的密码更改策略相同的频率使我们的令牌到期;虽然保持有效时间是很重要的(以尽量减少令牌盗窃的影响),并考虑平衡您的要求。 OAuth具有刷新令牌的概念 为什么OAuth v2同时具有访问权限和刷新令牌? 关于这个主题的一些争论和链接,我们目前没有使用这种方法,因为我们使用的ID服务器目前不支持这一点。
保持您的令牌安全也是一个考虑因素,例如:我们正在使用IOS中的KeyChain,但如果可能的话,还要考虑移动设备管理策略,好像这些令牌或密码是他们可能被窃取的设备之一,可能会考虑越狱检测,锁屏执行等。
以下链接似乎涵盖了一些明智的DIY选项 http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/。 “基于公钥/私钥的代币”部分介绍了我过去曾经有效使用的方法,可能对您有所帮助。
目前虽然我正在使用 http://identityserver.codeplex.com/ 具有OAuth承载令牌的Thinktecture IdentityServer(“资源所有者密码凭证”授权类型)...我发现这是一组非常好的代码和示例,可让IOS客户端获取令牌并调用WebApi。
如果您真的必须保护您的注册屏幕,您可以使用设备上安装的客户端证书进行身份验证...再次,Thinktecture服务可以帮助您 https://identity.thinktecture.com/idsrv/docs/default.htm?RequestingatokenusingOAuth2.html。虽然注册过程是安全的 在使用nonce的电子邮件中激活/注册/密码重置链接的最佳做法是什么 例如电子邮件确认和激活等可以安全地公开访问 - 这完全取决于您的业务要求和所需的注册工作流程。
您至少应该使用传输级别安全SSL,但建议您使用邮件级安全性,例如加密任何令牌都是非常可取的 - OAuth规范对此有所说明 http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#mitigation。
关于到期令牌 - 我们倾向于以与我们的密码更改策略相同的频率使我们的令牌到期;虽然保持有效时间是很重要的(以尽量减少令牌盗窃的影响),并考虑平衡您的要求。 OAuth具有刷新令牌的概念 为什么OAuth v2同时具有访问权限和刷新令牌? 关于这个主题的一些争论和链接,我们目前没有使用这种方法,因为我们使用的ID服务器目前不支持这一点。
保持您的令牌安全也是一个考虑因素,例如:我们正在使用IOS中的KeyChain,但如果可能的话,还要考虑移动设备管理策略,好像这些令牌或密码是他们可能被窃取的设备之一,可能会考虑越狱检测,锁屏执行等。