如何在web api中添加身份验证?

时间:2015-02-12 09:39:50

标签: .net vb.net authentication asp.net-web-api access-token

我已经在没有身份验证的情况下实现了webapi,它运行正常。 但现在我想实现WebAPI的授权。

我尝试使用“个人用户帐户”创建新项目,并将我的controllerFile添加到控制器文件夹,然后在controllerFile中添加<Authorize>,但它仅适用于此默认数据库。

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-IRAApi-20150211114242.mdf;Initial Catalog=aspnet-IRAApi-20150211114242;Integrated Security=True"
          providerName="System.Data.SqlClient" />

我只想为相同的功能设置自己的数据库。 我的数据库与默认数据库具有相同的表名。

或者还有其他方法可以做到这一点 如果有人登录然后生成访问令牌,那么人就可以访问web api,否则不能访问。

我正在开发visual studio 2013和dotnet framework 4.5。

1 个答案:

答案 0 :(得分:1)

我将使用“Web API”模板创建一个新项目(不是Empty而不是MVC,并且已检查Web API)。如果选择“个人用户帐户”,它将生成基于令牌的身份验证的基础结构。它还会自动生成帮助API,因此您可以导航到:

http://localhost:[port]/help/

查看文档。模板支持密码类型授权,因此您可以将新用户发布到/ api / Account / Register,然后使用宏类型“密码”和用户的名称和密码将其发布到/ Token。

要查看此操作,请查看此视频: https://channel9.msdn.com/Series/Web-API-Design/05

源代码可在GitHub上找到: https://github.com/MicrosoftLearning/WebAPIDesign/tree/master/05%20-%20Security/05cTokenBasedAuthentication

您可能正在寻找的主要代码位于App_Start / Startup.Auth.cs下:

OAuthOptions = new OAuthAuthorizationServerOptions
            {
                TokenEndpointPath = new PathString("/Token"),
                Provider = new ApplicationOAuthProvider(PublicClientId),
                AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
                AllowInsecureHttp = true
            };

整个模块涵盖了前后安全性。