代码之家  ›  专栏  ›  技术社区  ›  Dylan Beattie

在Web服务中使用OpenID:验证的最佳方法?

  •  6
  • Dylan Beattie  · 技术社区  · 7 年前

    我正在寻找一些关于对我的Web服务进行身份验证的最佳方法的指导。现在,我在.NET 3.5上有一个标准的WebService,在这个WebService之上有一个MVC网站。

    MVC网站使用OpenID对用户进行身份验证,在开发阶段,我们只是将用户的OpenID声明标识符传递给WebService进行身份验证。显然,这并不是我们在上线时向客户发布的内容。

    所以我的问题是: 对WebService进行身份验证的最佳方法是什么?

    我使用的一些API使用身份验证令牌。我们的另一个想法是,在连接到Web服务时,向客户机传递一个加密密钥,他们可以使用该密钥进行所有传输。

    我在这里想得很清楚,再次感谢您的帮助!谢谢!

    更新:现在我已经创建了一个自定义的soapauthenticationHeader,它具有openidurl属性。这用于所有服务调用,以对用户进行身份验证。问题有两个方面:

    1. 如果黑客知道是用户的openidurl,他们可以很容易地访问Web服务。
    2. OpenIDURL当前以纯文本形式传递。

    因此,我可以在连接到Web服务时将加密密钥传递给客户机,并让客户机在soapauthentication头中加密openidurl。但我不知道该怎么做…

    3 回复  |  直到 14 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    您可能想看看OAuth:

    http://oauth.net/

    (使用) http://oauth.net/code/ 用于编码。

    因为它是专门为这个场景设计的(开放ID实际上不是)。

    还有一个关于SA的问题,它询问了保护Web服务的最佳方法,并讨论了开放ID和OAuth:

    Web Service Authentication using OpenID

        2
  •  0
  •   John Saunders    17 年前

    ASMX Web服务(微软现在认为是“遗留”服务)无法使用OpenID进行身份验证。他们只能使用IIS提供给他们的。您可以添加一个soapextension来为它们进行openid身份验证,但我不会在那里花费时间。

    我对OpenID的了解还不够确定,但我怀疑它可以通过联邦安全性与WCF集成。我相信有人会详细回答这个问题。

        3
  •  0
  •   James S    17 年前

    这不是真正的答案,但我不能留下评论…

    你说“我在.NET 3.5上有一个标准的WebService,在这个WebService之上有一个MVC网站”。

    在这里,我可能有点离谱,但语言暗示这两个服务器位于同一个服务器上。如果是这样,为什么不能共享用户数据库和cookie令牌呢?

    詹姆斯