首页 > 其他分享 >在net core 6中如何配置oauth2.0

在net core 6中如何配置oauth2.0

时间:2023-11-12 16:56:37浏览次数:21  
标签:core GitHub 配置 context OAuth new net oauth2.0 options

在.NET Core 6中配置OAuth 2.0可以通过使用Microsoft.AspNetCore.Authentication.OAuth包来实现。以下是一个简单的示例,演示了如何在.NET Core 6中配置OAuth 2.0来与GitHub进行集成:

首先,安装Microsoft.AspNetCore.Authentication.OAuth包:
```bash
dotnet add package Microsoft.AspNetCore.Authentication.OAuth
```

然后,在Startup.cs文件中进行配置:
```csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "GitHub";
})
.AddCookie()
.AddOAuth("GitHub", options =>
{
options.ClientId = "YourGitHubClientId";
options.ClientSecret = "YourGitHubClientSecret";
options.CallbackPath = new PathString("/signin-github");
options.AuthorizationEndpoint = "https://github.com/login/oauth/authorize";
options.TokenEndpoint = "https://github.com/login/oauth/access_token";
options.UserInformationEndpoint = "https://api.github.com/user";
options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
options.ClaimActions.MapJsonKey(ClaimTypes.Name, "login");
options.ClaimActions.MapJsonKey("urn:github:name", "name");
options.Events = new OAuthEvents
{
OnCreatingTicket = async context =>
{
var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
var response = await context.Backchannel.SendAsync(request, context.HttpContext.RequestAborted);
response.EnsureSuccessStatusCode();
var user = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
context.RunClaimActions(user.RootElement);
}
};
});
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ... 其他中间件配置

app.UseAuthentication();
app.UseAuthorization();

// ... 其他配置
}
```

在上面的示例中,我们使用AddOAuth方法配置了GitHub作为OAuth 2.0的提供者。你需要替换示例中的ClientId和ClientSecret为你在GitHub上注册的应用程序的实际值。

这只是一个简单的示例,实际的配置可能会因为你要集成的OAuth 2.0提供者而有所不同。但是基本的配置流程是类似的,你需要提供ClientId、ClientSecret、AuthorizationEndpoint、TokenEndpoint等信息,并配置用户信息的获取方式。

标签:core,GitHub,配置,context,OAuth,new,net,oauth2.0,options
From: https://www.cnblogs.com/dengxansen/p/17827386.html

相关文章

  • .Net进阶(5)使用Fody实现 .NET的静态编织
    序言 广义的面向切面编程,有静态编织和动态代理两种形式,它们都可以在某个方法执行前后插入某种处理逻辑。不同的地方在于,前者发生在编译时期间,后者发生在运行时期间。对于.NET而言,最常见的静态编织方案是 PostSharp 和 Mono.Cecil,两者的区别是:一个付费、一个免费。本文介......
  • net core自带的缓存机制
    .NETCore的缓存机制主要有以下几种:1.内存缓存(In-MemoryCache):这是最简单的缓存形式,它将缓存数据存储在应用程序的内存中。这种缓存方式非常快速,但是如果应用程序重启或者服务器发生故障,缓存数据将会丢失。2.分布式缓存(DistributedCache):这种缓存方式可以在多个服务器之间共享......
  • 人脸识别facenet-pytorch/Yolov5
    facenet-pytorch篇importcv2fromPILimportImageimportosfromfacenet_pytorchimportMTCNNfromtorchvision.transformsimportToPILImagefolder_path=r'E:\Code\Python\QQh5\sourceLib'output_folder=r'testPersonFace'#如果输出文件......
  • 二进制安装Kubernetes(k8s)v1.28.3
    二进制安装Kubernetes(k8s)v1.28.3https://github.com/cby-chen/Kubernetes开源不易,帮忙点个star,谢谢了介绍kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。若您没有IPV6环境,或者不想使用IPv6,不对主机进行......
  • ASP.NET Core MVC的基础知识
    1,模型(Model):它代表应用程序中处理数据和业务逻辑的部分。模型通常包含用于访问数据库、读取数据、验证数据等操作的代码。2,视图(View):它代表应用程序的用户界面部分。视图通常是一个HTML文件,它通过模型中的数据来渲染页面。3,控制器(Controller):它代表应用程序的业务逻辑和控......
  • 无涯教程-批处理 - NET STATISTICS函数
    显示工作站或服务器的网络统计信息。Netstatistics[SERVER/WORKSTATION]NETSTATISTICS-示例NetstatisticsServerServerStatisticsfor\\WIN-50GP30FGO75Statisticssince1/3/20169:16:28PMSessionsaccepted0Sessionstimed-out......
  • 云原生架构实战07 Kubernetes的核心实战 下
    7、存储抽象pod如果挂掉,在其他的机器启动新pod,原来pod的数据是无法迁移到新机器的;所以使用单独的存储层来解决。将节点上的文件或目录挂载到pod上,此时该目录会变成持久化存储目录,即使Pod被删除后重启,也可以重新加载到该目录,该目录下的文件不会丢失。nfs卷能将NFS(网络文件系统)挂载......
  • 无涯教程-批处理 - NET USE函数
    连接或断开计算机与共享资源的连接,或显示有关连接的信息。NETUSE[devicename|*][\\computername\sharename[\volume][password|*]][/USER:[domainname\]username][/USER:[dotteddomainname\]username][/USER:[username@dotteddomainname][/SMARTCARD][/SAV......
  • Powershell 实现telnet 服务端
    Write-Host"这是一个简单的TCP服务器,用于监听指定的端口,并接收来自客户端的数据。"Write-Host"客户端请使用telnetIP+端口的方式连接至服务器"Write-Host"目前同时只支持单个客户端,请勿连接多个客户端,会导致程序运行异常"Write-Host"作者:ID404"Write-Host"版本:1.0"......
  • P2722 [USACO3.1] 总分 Score Inflation
    还是选与不选的问题,但是每个背包可以无限次选,所以这是个完全背包!#include<bits/stdc++.h>usingnamespacestd;constintN=2e4+10;intf[N],w[N],t[N];intmain(){ intn,m; cin>>n>>m; for(inti=1;i<=m;i++){ cin>>w[i]>>t[i]; } for(inti=1;i<=m;i+......