ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 如何在ASP.NET Core Razor Pages项目中启用外部身份验证?

2019-07-15 06:07:06  阅读:269  来源: 互联网

标签:c visual-studio oauth-2-0 asp-net-core asp-net-core-2-0


我在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应用程序.
>单击“更改身份验证”,选择“个人用户帐户”
单击确定.
>单击“确定”以创建项目.

Visual Studio - New Project

Visual Studio - New ASP.NET App

Visual Studio - New ASP.NET App

Visual Studio - New ASP.NET App

添加初始迁移

默认情况下,为ASP.NET Core应用程序启用迁移,但您需要使用程序包管理器控制台添加初始迁移并更新数据库.

>转到工具> NuGet包管理器>包管理器控制台
>执行Add-Migration Initial
>执行更新数据库

启用S​​SL / 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控制台.
>单击页面顶部的下拉菜单.
>单击加号图标以创建新项目.
>为项目命名,然后单击“创建”.

Creating a Google project

Creating a Google project

Creating a Google project

创建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 /登入,谷歌
>单击“创建”按钮.身份证和秘密将很方便
 显示在带有复制按钮的模态窗口中,您可以单击该按钮
 复制字符串.

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

启用Google API

您需要为Google Cloud Platform项目启用Google API.

>在左侧的API和服务菜单下,单击库
部分.
>搜索“谷歌”.
>点击结果中的Google API.
>单击“启用”按钮.

enter image description here

enter image description here

enter image description here

添加API凭据

启用API并获得凭据后,您需要将其添加到您的应用中.在ASP.NET Core项目中有两种方法可以做到这一点.

>通过编辑JSON文件添加API凭据
>使用命令行添加凭据

在ASP.NET Core项目中,使用Secret Manager将秘密存储在解决方案文件夹之外.它将秘密存储在AppData文件夹中的JSON文件中.通过右键单击解决方案资源管理器中的项目名称,然后选择“管理用户秘密”,可以轻松找到此文件.

enter image description here

enter image description here

尽管JSON文件只是纯文本文件并且可以手动编辑,但它们实际上是用于应用程序之间的数据交换,应该由应用程序生成和使用.因此,建议的方法是使用命令行来存储机密.除非你犯了一个错误,需要手动编辑.一个常见的错误是将秘密设置为ID,将ID设置为秘密.因此,请确保在从凭据页面复制和粘贴时粘贴正确的字符串.

您需要在项目的根目录或解决方案中打开命令行窗口,以便成功执行以下命令.最简单的方法是在解决方案资源管理器中右键单击项目名称,然后选择“打开命令行”,然后选择“PowerShell”或“CMD”.

command line

运行以下两个命令,将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"];
});

>构建应用程序并运行它.您应该看到使用登录的选项
谷歌.

google login

google login

google login

google login

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应用程序.
>单击“更改身份验证”,选择“个人用户帐户”
单击确定.
>单击“确定”以创建项目.

Visual Studio - New Project

Visual Studio - New ASP.NET App

Visual Studio - New ASP.NET App

Visual Studio - New ASP.NET App

添加初始迁移

默认情况下,为ASP.NET Core应用程序启用迁移,但您需要使用程序包管理器控制台添加初始迁移并更新数据库.

>转到工具> NuGet包管理器>包管理器控制台
>执行Add-Migration Initial
>执行更新数据库

启用S​​SL / 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项目

enter image description here

enter image description here

enter image description here

启用Facebook登录API

enter image description here

enter image description here

enter image description here

创建OAuth凭据

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

添加API凭据

enter image description here

使用OWIN启用Facebook身份验证

services.AddAuthentication().AddFacebook(facebookOptions =>
{
    facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
    facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});

enter image description here

enter image description here

enter image description here

enter image description here

标签:c,visual-studio,oauth-2-0,asp-net-core,asp-net-core-2-0
来源: https://codeday.me/bug/20190715/1464830.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有