c# – 如何在ASP.NET Core Razor Pages项目中启用外部身份验证?
作者:互联网
我在Windows 10上的Visual Studio 2017社区中有一个ASP.NET Core项目.我使用Razor Pages作为编程模型.我想使用Google或Facebook作为身份验证提供程序启用外部OAuth 2.0身份验证,以便用户可以使用他们的Google或Facebook帐户登录.
如何在此类项目中启用Google或Facebook身份验证?
解决方法:
应该明确的是,ASP.NET Core不是ASP.NET,Razor Pages不是传统的MVC模型.如果您想进一步了解ASP.NET Core Razor Pages和ASP.NET Core MVC之间的区别,请访问see this Q & A.
概观
> Google身份验证
>创建Visual Studio项目
>添加初始迁移
>启用SSL / TLS
>创建Google Cloud Platform项目
>创建OAuth凭据
>启用Google API
>添加API凭据
>使用OWIN启用Google身份验证
> Facebook身份验证
>创建Visual Studio项目
>添加初始迁移
>启用SSL / TLS
>创建Facebook App项目
>启用Facebook登录API
>创建OAuth凭据
>添加API凭据
>使用OWIN启用Facebook身份验证
Google身份验证
您需要的第一件事是Google帐户,以便在您的应用中使用所需的API.如果您还没有Google Cloud Platform项目,则需要创建一个新的Google Cloud Platform项目.然后,您需要为项目创建OAuth凭据.这些凭证由ID和秘密组成.这些是用户名和密码的API等价物. Google将这些称为客户端ID和客户端密钥.一定要保护这些,不要与任何人分享.
创建Visual Studio项目
创建项目时,应选择ASP.NET Core Web Application模板.在随后的对话框中,您需要选择“Web应用程序和个人用户帐户”选项以添加ASP.NET核心标识.
>转到文件>新>项目
>选择已安装> Visual C#>网络> ASP.NET核心Web应用程序
>设置名称和位置,然后单击“确定”.
>选择.NET Core,ASP.NET Core 2.0,Web应用程序.
>单击“更改身份验证”,选择“个人用户帐户”
单击确定.
>单击“确定”以创建项目.
添加初始迁移
默认情况下,为ASP.NET Core应用程序启用迁移,但您需要使用程序包管理器控制台添加初始迁移并更新数据库.
>转到工具> NuGet包管理器>包管理器控制台
>执行Add-Migration Initial
>执行更新数据库
启用SSL / TLS
OAuth 2.0要求您使用安全通道HTTPS协议.因此,您需要为项目启用SSL / TLS.如果您使用Web应用程序模板并按上面所述添加ASP.NET Core Identity,则会自动为您配置.
至少有三种方法可以确保在您的应用中使用HTTPS.
>使用数据注释
>将HTTP重定向到HTTPS
>全球实施HTTPS
您可以将[RequireHttps]属性添加到控制器,方法或Razor页面,但是您必须记住在创建新控制器,方法或Razor页面时添加属性.
另一种方法是将所有HTTP请求重定向到HTTPS.为此,您可以导航到项目根目录中Startup.cs文件中的Configure(IApplicationBuilder app,IHostingEnvironment env)方法,并在其正文中添加以下Rewrite选项.
var options = new RewriteOptions()
.AddRedirectToHttps();
app.UseRewriter(options);
第三种方法是在您的应用中全局实施HTTPS.这要求我们向HTTPS发出所有请求,因此忽略所有HTTP请求.全局要求HTTPS是一种安全性最佳实践,建议采用此方法.
>打开项目根目录中的Startup.cs文件.
>导航到ConfigureServices(IServiceCollection服务)
方法并在其正文中添加以下过滤器.
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
>添加Microsoft.AspNetCore.Mvc名称空间.
创建Google Cloud Platform项目
如果您没有Google帐户,则需要创建一个.如果您在提示创建第一个项目之前从未访问过Google云端平台.
>转到Google Cloud Platform控制台.
>单击页面顶部的下拉菜单.
>单击加号图标以创建新项目.
>为项目命名,然后单击“创建”.
创建OAuth凭据
>确保在顶部选择新创建的项目
Google Cloud Platform控制台页面.
>在左侧的API和服务菜单下,单击凭据
部分.
>单击“创建凭据”下拉列表,然后选择“OAuth客户端”
ID.系统将提示您先配置同意屏幕.
>单击“配置同意”屏幕.
>至少提供产品名称,然后单击“保存”.你现在会
允许继续创建OAuth凭据的过程.
>在凭据页面上选择Web应用程序作为应用程序类型.
>转到Visual Studio并在“解决方案”中选择项目名称
资源管理器.
>转到查看>属性页(或按Shift F4).
>复制URL并确保其包含HTTPS协议.
>返回凭据页面.
>在Authorized JavaScript origin字段中,粘贴URL
你的应用.它不应该以正斜杠结束,例如
https:// localhost:44324所以一定要删除任何尾随
正斜线.
>在授权重定向URI中,粘贴应用的URL和
最后添加“signin-google”,例如
https://开头本地主机:44324 /登入,谷歌
>单击“创建”按钮.身份证和秘密将很方便
显示在带有复制按钮的模态窗口中,您可以单击该按钮
复制字符串.
启用Google API
您需要为Google Cloud Platform项目启用Google API.
>在左侧的API和服务菜单下,单击库
部分.
>搜索“谷歌”.
>点击结果中的Google API.
>单击“启用”按钮.
添加API凭据
启用API并获得凭据后,您需要将其添加到您的应用中.在ASP.NET Core项目中有两种方法可以做到这一点.
>通过编辑JSON文件添加API凭据
>使用命令行添加凭据
在ASP.NET Core项目中,使用Secret Manager将秘密存储在解决方案文件夹之外.它将秘密存储在AppData文件夹中的JSON文件中.通过右键单击解决方案资源管理器中的项目名称,然后选择“管理用户秘密”,可以轻松找到此文件.
尽管JSON文件只是纯文本文件并且可以手动编辑,但它们实际上是用于应用程序之间的数据交换,应该由应用程序生成和使用.因此,建议的方法是使用命令行来存储机密.除非你犯了一个错误,需要手动编辑.一个常见的错误是将秘密设置为ID,将ID设置为秘密.因此,请确保在从凭据页面复制和粘贴时粘贴正确的字符串.
您需要在项目的根目录或解决方案中打开命令行窗口,以便成功执行以下命令.最简单的方法是在解决方案资源管理器中右键单击项目名称,然后选择“打开命令行”,然后选择“PowerShell”或“CMD”.
运行以下两个命令,将id和secret替换为实际值.
dotnet user-secrets set Authentication:Google:ClientId id
dotnet user-secrets set Authentication:Google:ClientSecret secret
使用OWIN启用Google身份验证
ASP.NET Core项目依赖于OWIN中间件进行外部身份验证.
>打开Startup.cs文件.
>导航到ConfigureServices(IServiceCollection服务)
方法并将以下代码添加到其正文中.
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
});
>构建应用程序并运行它.您应该看到使用登录的选项
谷歌.
Facebook身份验证
您需要的第一件事是Facebook帐户,以便在您的应用中使用所需的API.如果您还没有Facebook App项目,则需要创建一个新的Facebook App项目.然后,您需要为项目创建OAuth凭据.这些凭证由ID和秘密组成.这些是用户名和密码的API等价物. Facebook将这些称为App ID和App Secret.一定要保护这些,不要与任何人分享.
创建Visual Studio项目
创建项目时,应选择ASP.NET Core Web Application模板.在随后的对话框中,您需要选择“Web应用程序和个人用户帐户”选项以添加ASP.NET核心标识.
>转到文件>新>项目
>选择已安装> Visual C#>网络> ASP.NET核心Web应用程序
>设置名称和位置,然后单击“确定”.
>选择.NET Core,ASP.NET Core 2.0,Web应用程序.
>单击“更改身份验证”,选择“个人用户帐户”
单击确定.
>单击“确定”以创建项目.
添加初始迁移
默认情况下,为ASP.NET Core应用程序启用迁移,但您需要使用程序包管理器控制台添加初始迁移并更新数据库.
>转到工具> NuGet包管理器>包管理器控制台
>执行Add-Migration Initial
>执行更新数据库
启用SSL / TLS
OAuth 2.0要求您使用安全通道HTTPS协议.因此,您需要为项目启用SSL / TLS.如果您使用Web应用程序模板并按上面所述添加ASP.NET Core Identity,则会自动为您配置.
至少有三种方法可以确保在您的应用中使用HTTPS.
>使用数据注释
>将HTTP重定向到HTTPS
>全球实施HTTPS
您可以将[RequireHttps]属性添加到控制器,方法或Razor页面,但是您必须记住在创建新控制器,方法或Razor页面时添加属性.
另一种方法是将所有HTTP请求重定向到HTTPS.为此,您可以导航到项目根目录中Startup.cs文件中的Configure(IApplicationBuilder app,IHostingEnvironment env)方法,并在其正文中添加以下Rewrite选项.
var options = new RewriteOptions()
.AddRedirectToHttps();
app.UseRewriter(options);
第三种方法是在您的应用中全局实施HTTPS.这要求我们向HTTPS发出所有请求,因此忽略所有HTTP请求.全局要求HTTPS是一种安全性最佳实践,建议采用此方法.
>打开项目根目录中的Startup.cs文件.
>导航到ConfigureServices(IServiceCollection服务)
方法并在其正文中添加以下过滤器.
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
>添加Microsoft.AspNetCore.Mvc名称空间.
创建Facebook App项目
启用Facebook登录API
创建OAuth凭据
添加API凭据
使用OWIN启用Facebook身份验证
services.AddAuthentication().AddFacebook(facebookOptions =>
{
facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});
标签:c,visual-studio,oauth-2-0,asp-net-core,asp-net-core-2-0 来源: https://codeday.me/bug/20190715/1464830.html