调用 oauth2_ASP.NET Core分布式项目实战(oauth2 + oidc 实现 client部分)学习笔记

本文档详细介绍了如何在Asp.Net Core MVC客户端应用中配置OAuth2和OpenID Connect (OIDC),包括设置认证服务、启动配置、URL配置、客户端配置以及服务端的调整,以实现安全的身份验证和授权流程。通过这个过程,读者可以学习到如何在本地运行身份验证服务器,并将客户端应用与其安全地连接。
摘要由CSDN通过智能技术生成

任务16:oauth2 + oidc 实现 client部分

实现 client 之前启动一下上一节的 server,启动之前需要清除一些代码

注释 Program 的 MigrateDbContext
public static void Main(string[] args)
{
BuildWebHost(args)
//.MigrateDbContext((context, services) => {
// new ApplicationDbContextSeed().SeedAsync(context, services)
// .Wait();
//})
.Run();
}
RegisterViewModel
[Required]
//[DataType(DataType.EmailAddress)]
//public string Email{get;set;}
public string UserName { get; set; }

启动程序,使用 Config 中的 TestUser 登录

3c9b7989e27d3f5d7ef213e68467a473.png

登录成功,不过现在是在本地,接下来需要把它放到客户端里面

新建一个 Asp.Net Core MVC 网站 MvcClient

在 startup 的 ConfigureServices 中添加 Authentication
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure(options =>
{// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ClientId = "client";
options.ClientSecret = "secret";
options.SaveTokens = true;
});
}
在 startup 的 Configure 中的 UseMvc 前添加 Authentication
app.UseAuthentication();
在 Program 的 CreateWebHostBuilder 中配置 Urls
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5001")
.UseStartup();

客户端设置为5001来启动,然后服务端设置为5000

mvcCookieAuthSample 的 Program
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseEnvironment("Development")
.UseUrls("http://localhost:5000")
.UseStartup()
.Build();
修改服务端的 Config 配置跳转地址
public static IEnumerableGetClients()
{return new List
{new Client()
{
ClientId = "client",
AllowedGrantTypes = GrantTypes.Implicit,// 隐式模式
ClientSecrets =
{new Secret("secret".Sha256())
},
RedirectUris = { "http://localhost:5001/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:5001/signout-callback-oidc" },//AllowedScopes = {"api"},
AllowedScopes =
{
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.OpenId,
}
}
};
}
客户端的 Controller 打上 Authorize 标签
[Authorize]
public class HomeController : Controller
修改客户端 launchSettings.json 中的 applicationUrl
"applicationUrl": "http://localhost:5001",
"sslPort": 0

启动服务端,客户端,可以看到跳转到登录界面

9a371a2234ff95cadf6fddab03b0f535.png

登录之后会跳转到 http://localhost:5001/

e52be4c3874c0d4e3589af4680d3aeb6.png

在客户端 About.cshtml 页面显示 identity 的 claims
@{
ViewData["Title"] = "About";
}

@ViewData["Title"]


@ViewData["Message"]



@*

Use this area to provide additional information.

*@

@foreach (var claim in User.Claims)
{@claim.Type@claim.Value
}

启动程序,跳转之后,点击 About 进入 About 页面

60f9ff6a0aecafbeb37f216a7d6ad524.png

主要返回了服务端 Config 中配置的信息

public static IEnumerableGetIdentityResources()
{return new List
{new IdentityResources.OpenId(),new IdentityResources.Profile(),new IdentityResources.Email(),
};
}

课程链接

http://video.jessetalk.cn/course/explore

相关文章

ASP.NET Core分布式项目实战(oauth2 + oidc 实现 server部分)--学习笔记

ASP.NET Core分布式项目实战(oauth2与open id connect 对比)--学习笔记

ASP.NET Core分布式项目实战(详解oauth2授权码流程)--学习笔记

ASP.NET Core分布式项目实战(oauth密码模式identity server4实现)--学习笔记

ASP.NET Core分布式项目实战(第三方ClientCredential模式调用)--学习笔记

ASP.NET Core分布式项目实战(客户端集成IdentityServer)--学习笔记

ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记

ASP.NET Core分布式项目实战(课程介绍,MVP,瀑布与敏捷)--学习笔记

ASP.NET Core快速入门 -- 学习笔记汇总

345f246ce572a17a98b05a83b0350ba7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值