gpt4 book ai didi

c# - 如何在web服务和手机之间进行身份验证?

转载 作者:太空狗 更新时间:2023-10-29 20:15:22 25 4
gpt4 key购买 nike

我想制作一个 Windows Mobile 6 手机应用程序。此应用程序将与我想要创建的 Web 服务对话。

我不太了解网络服务和手机应用程序编程,所以我有几个问题。

  1. 如何进行身份验证?就像我的用户加载我的应用程序并转到登录页面一样。他们输入他们的凭据。这将被发送到服务器并进行身份验证。现在我要寄回什么?有某种 FormsAuthentication 吗?

  2. 他们登录后,我是否必须继续检查他们是否登录?就像在 asp.net mvc 中一样,我的所有标签上都有 AuthorizeAttributes。这样一来,没有人可以只输入该操作方法的 url 并能够访问它。但由于这是一个应用程序,我不确定他们是否可以(说)进入您的登录表单(第一个表单),然后以某种方式在不登录的情况下进入您的主表单(登录表单之后的那个)。

  3. Web 服务是否有像 asp.net mvc 这样的授权标签?因为我可能需要一些类似的东西来确保没有人在他们的网络浏览器中输入我的网络服务路径并访问我在其中创建的所有这些方法。

  4. 我现在正在制作一个 asp.net mvc 应用程序,当用户在我的站点上键入他们的凭据时。它发送的是我猜是明文吗?到服务器散列然后检查。我知道也许有一天,当我负担得起时,可能会获得 ssl 以使其更安全。

所以我的问题是,将凭据从手机发送到服务器会不会比我现在为我的网站所拥有的安全性低?差不多?可以做些什么来使其更安全(是否再次使用 SSL?)。

谢谢

最佳答案

您还可以使用 SOAP header 传递用户凭据或身份验证 token 。您可以在 Authentication for Web Services (using SOAP headers) 上找到有关如何执行此操作的文章。 ,但总而言之,您创建了一个头类:

using System.Web.Services.Protocols;

public class AuthHeader : SoapHeader
{
public string Username;
public string Password;
}

您在网络服务上定义一个公共(public)属性

public AuthHeader AuthenticationInfo;

并向您希望仅供经过身份验证的用户访问的任何 Web 方法添加一些属性:

[SoapHeader ("AuthenticationInfo", Required=true)]
[WebMethod]
public string HelloSecretWorld()
{
if(!(AuthenticationInfo.UserName == "Hello" && AuthenticationInfo.UserName.Password == "World"))
throw new AuthenticationException();

return "Hello World";
}

客户端代码如下所示:

MyWebService ws = new MyWebService();
ws.AuthenticationInfo = new AuthHeader {Username = "Hello", Password = "World"};
Console.Out.WriteLine(ws.HelloSecretWorld());

这样您就不需要修改方法的签名来添加身份验证。

关于c# - 如何在web服务和手机之间进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com