我已经在没有身份验证的情况下实现了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。
答案 0 :(得分:1)
我将使用“Web API”模板创建一个新项目(不是Empty而不是MVC,并且已检查Web API)。如果选择“个人用户帐户”,它将生成基于令牌的身份验证的基础结构。它还会自动生成帮助API,因此您可以导航到:
查看文档。模板支持密码类型授权,因此您可以将新用户发布到/ 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
};
整个模块涵盖了前后安全性。