当前位置: 首页 > news >正文

电大网上作业代做网站相册制作软件app

电大网上作业代做网站,相册制作软件app,赣榆县建设局网站,鲁谷做网站的公司目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor OIDC 单点登录授权实例2-登录信息组件wasmBlazor OIDC 单点登录授权实例3-服务端管理组件Blazor OIDC 单点登录授权实例4 …目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor OIDC 单点登录授权实例2-登录信息组件wasmBlazor OIDC 单点登录授权实例3-服务端管理组件Blazor OIDC 单点登录授权实例4 - 部署服务端/独立WASM端授权Blazor OIDC 单点登录授权实例5 - 独立SSR App (net8 webapp)端授权Blazor OIDC 单点登录授权实例6 - Winform 端授权Blazor OIDC 单点登录授权实例7 - Blazor hybird app 端授权 (目录暂时不更新,跟随合集标题往下走) 源码 BlazorSSRAppOIDC 十分钟搞定单点登录 单点登录SSO简化了用户体验使用户能够在访问多个应用时只需一次登录。这提高了用户满意度减少了密码遗忘的风险同时增强了安全性。但是实现单点登录并不容易需要应用程序实现和认证服务器的交互逻辑增加了应用程序的开发工作量。例子中的安全策略中提供了 OpenID Connect (OIDC) 的能力无需对应用做过多的修改在十分钟内即可立刻实现单点登录。 当采用单点登录之后用户只需要登录一次就可以访问多个应用系统。SSO 通常由一个独立的身份管理系统来完成该系统为每个用户分配一个全局唯一的标识用户在登录时只需要提供一次身份认证就可以访问所有的应用系统。我们在使用一些网站时经常会看到“使用微信登录”、“使用 Google 账户登录”等按钮这些网站就是通过 SSO 来实现的。 采用单点登录有以下几个好处 用户只需要登录一次就可以访问多个应用系统不需要为每个应用系统都单独登录。 应用系统不需要自己实现用户认证只需将认证工作交给单点登录系统可以大大减少应用系统的开发工作量。 使用 OIDC 单点登录, 可以简化客户端编写流程, 专注于功能实现而不用重复撰写登录部分功能代码, 也不用直接接触身份验证数据库, 剥离繁琐的重复劳动部分. 建立 net8 webapp ssr 工程 引用以下库 ItemGroupPackageReference IncludeBootstrapBlazor Version8.* /PackageReference IncludeDensen.Extensions.BootstrapBlazor Version8.* /PackageReference IncludeMicrosoft.AspNetCore.Authentication.OpenIdConnect Version8.* /PackageReference IncludeMicrosoft.AspNetCore.Components.Authorization Version8.* /PackageReference IncludeMicrosoft.Extensions.Http Version8.* //ItemGroup_Imports.razor 加入引用 using BootstrapBlazor.Components using Microsoft.AspNetCore.Authorization using Microsoft.AspNetCore.Components.AuthorizationApp.razor 加入必须的UI库引用代码 完整文件 !DOCTYPE html html langenheadmeta charsetutf-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /base href/ /Link Href_content/BootstrapBlazor.FontAwesome/css/font-awesome.min.css /Link Href_content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css /Link Href_content/BootstrapBlazor/css/motronic.min.css /link relstylesheet hrefapp.css /link relstylesheet hrefBlazorSSRAppOIDC.styles.css /HeadOutlet rendermodenew InteractiveServerRenderMode(false) / /headbodyRoutes rendermodenew InteractiveServerRenderMode(false) /ReconnectorOutlet ReconnectInterval5000 rendermodenew InteractiveServerRenderMode(false) /Script Src_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js/Scriptscript src_framework/blazor.web.js/script /body/htmlRoutes.razor 加入授权 完整代码 Router AppAssemblytypeof(Program).AssemblyFound ContextrouteDataAuthorizeRouteView RouteDatarouteData DefaultLayouttypeof(Layout.MainLayout)NotAuthorizedp rolealert您无权访问该资源./p/NotAuthorizedAuthorizingp正在验证您的身份.../p/Authorizing/AuthorizeRouteView/Found /Router添加Oidc授权配置 新建 OidcProfile.cs 文件 using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using System.Security.Claims;namespace OidcClientShared;public class OidcProfile { public static void OidcDIY(OpenIdConnectOptions options){var authority https://ids2.app1.es/; //由于时间的关系,已经部署有一个实际站点, 大家也可以参考往期文章使用本机服务器测试//authority https://localhost:5001/; var clientId Blazor5002;var callbackEndPoint http://localhost:5002;options.Authority authority;options.ClientId clientId;options.ResponseType OpenIdConnectResponseType.Code;options.ResponseMode OpenIdConnectResponseMode.Query;options.SignedOutRedirectUri callbackEndPoint;options.CallbackPath /authentication/login-callback;options.SignedOutCallbackPath /authentication/logout-callback;options.Scope.Add(BlazorWasmIdentity.ServerAPI openid profile);options.GetClaimsFromUserInfoEndpoint true;options.SaveTokens true;options.MapInboundClaims false;options.ClaimActions.MapAll();options.ClaimActions.MapJsonKey(ClaimTypes.Name, name);options.ClaimActions.MapJsonKey(ClaimValueTypes.Email, email, ClaimValueTypes.Email);options.ClaimActions.MapJsonKey(ClaimTypes.Role, role);options.Events new OpenIdConnectEvents{OnAccessDenied context {context.HandleResponse();context.Response.Redirect(/);return Task.CompletedTask;},OnTokenValidated context {var token context.TokenEndpointResponse?.AccessToken;if (!string.IsNullOrEmpty(token)){if (context.Principal?.Identity ! null){var identity context.Principal!.Identity as ClaimsIdentity;identity!.AddClaim(new Claim(AccessToken, token)); }}return Task.CompletedTask;}};}}Program.cs 加入授权相关 其中要加入Razor的cshtml支持, 因为登录要依靠管道跳转. 上下有两行都注释在文件内了. 完整代码 using BlazorSSRAppOIDC.Components; using OidcClientShared;var builder WebApplication.CreateBuilder(args);//在具有 Blazor Web 应用程序模板的 .NET 8 中需要将其更改为, 由于该Pages文件夹已移至该Components文件夹中因此您需要指定新位置的根目录或将该Pages文件夹移回项目的根级别 builder.Services.AddRazorPages().WithRazorPagesRoot(/Components/Pages); // Add services to the container. builder.Services.AddRazorComponents().AddInteractiveServerComponents();builder.Services.AddCascadingAuthenticationState(); builder.Services.AddHttpClient(); builder.Services.AddDensenExtensions(); builder.Services.ConfigureJsonLocalizationOptions(op {// 忽略文化信息丢失日志op.IgnoreLocalizerMissing true;});builder.Services.AddAuthentication(options {options.DefaultScheme Cookies;options.DefaultChallengeScheme oidc;}).AddCookie(Cookies).AddOpenIdConnect(oidc, OidcProfile.OidcDIY); var app builder.Build();// Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) {app.UseExceptionHandler(/Error, createScopeForErrors: true);// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts(); }app.UseHttpsRedirection();app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseAntiforgery(); //但出于某种原因这还不够。在 Blazor Web 应用程序模板中您明确需要调用 app.MapRazorPages();app.MapRazorComponentsApp().AddInteractiveServerRenderMode();app.Run();Pages 文件夹新建登录Razor页实现登录和注销跳转 展开 Login.cshtml 文件组合三角箭头, 编辑 Login.cshtml.cs Login.cshtml.cs using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc.RazorPages;namespace PersonalToolKit.Server.Components.Pages;public class LoginModel : PageModel {public async Task OnGet(string redirectUri){await HttpContext.ChallengeAsync(oidc, new AuthenticationProperties { RedirectUri redirectUri });}}Logout.cshtml.cs using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc.RazorPages;namespace PersonalToolKit.Server.Components.Pages;public class LogoutModel : PageModel {public async Task OnGet(string redirectUri){await HttpContext.SignOutAsync(Cookies);await HttpContext.SignOutAsync(oidc, new AuthenticationProperties { RedirectUri redirectUri });}}Routes.razor 加入授权 完整代码 Home.razor 完整代码 page / using System.Security.Claims inject NavigationManager NavigationPageTitleHome/PageTitleAuthorizeViewAuthorized你好, context.User.Identity?.Name (context.User.Claims.FirstOrDefault(c c.Type ClaimTypes.Role)?.Value)Button Text注销 OnClickBeginLogOut /br /br /br /h5以下是用户的声明/h5br /foreach (var claim in context.User.Claims){pclaim.Type: claim.Value/p}/AuthorizedNotAuthorizedButton Text登录 OnClickBeginLogIn /p默认账号 testtest.com 密码 0/p/NotAuthorized/AuthorizeViewcode {private string LoginUrl login?redirectUri;private void BeginLogIn(){var returnUrl Uri.EscapeDataString(Navigation.Uri);Navigation.NavigateTo(LoginUrl returnUrl, forceLoad: true);}private string LogoutUrl logout?redirectUri;private void BeginLogOut(){var returnUrl Uri.EscapeDataString(Navigation.Uri);Navigation.NavigateTo(LogoutUrl returnUrl, forceLoad: true);}}运行
http://www.w-s-a.com/news/919266/

相关文章:

  • 做网站可以申请个体户么网站的定位分析
  • jsp做的零食网站下载wordpress侧边栏折叠
  • 帝国网站单页做301南京旅游网站建设公司
  • 网站sem优化怎么做网站建设推广安徽
  • 比较好的室内设计网站潍坊网络科技
  • 南宁网站建设公设计联盟网站
  • 多个图表统计的网站怎么做百度推广费2800元每年都有吗
  • 连江县住房和城乡建设局网站企业类网站模版
  • 临沂seo整站优化厂家网站建设 大公司排名
  • 网站开发有哪些方式百度导航怎么下载
  • 网站认证免费视频直播网站建设方案
  • 瀑布流分享网站源代码下载网站构建的一般流程是什么
  • wordpress 4.9 多站wordpress邮箱解析
  • 微信网站开发企业汽车网站设计模板
  • 如何提升网站转化率遵义市公共资源交易平台
  • 网站目录管理模板企业解决方案部
  • 建设网站上申请劳务资质吗珠海哪个公司建设网站好
  • c2c商城网站建设在微信怎么开发公众号
  • 美的公司网站建设的目的做个网站要钱吗
  • 和县建设局网站孟州网站建设
  • 网站与规划设计思路竞价培训课程
  • 网站建设设计视频专业设计企业网站
  • 湖南省建设工程网站cerntos wordpress
  • 主机屋的免费空间怎么上传网站广告公司的经营范围有哪些
  • 门户网站建设公司案例门户建设是什么意思
  • 深圳seo专家东莞网站关键词优化排名
  • 套用别人产品图片做网站如何在阿里云自主建网站
  • 网站开发需要用哪些东西wordpress页面参数
  • 大连模板网站制作哪家好wordpress 安装不上
  • 宝塔搭建网站首页图片点击率如何提高