本文共 3250 字,大约阅读时间需要 10 分钟。
OAuth 2.0 提供了四种主要的授权模式(GrantType),其中之一是简化模式(implicit)。该模式的特点是通过浏览器直接向认证服务器申请令牌,无需经过第三方应用程序的服务器处理,省去了“授权码”这一步骤,因此得名。所有操作均在浏览器完成,令牌对访问者是可见的,而客户端无需进行认证。
在 IdentityServer4 中进行配置,确保客户端能够顺利获取令牌。以下是常用配置步骤:
public class Config{ public static IEnumerable GetIdentityResources() { return new List { new IdentityResources.OpenId(), new IdentityResources.Profile(), new IdentityResources.Email() }; } public static IEnumerable GetClients() { return new List { new Client { ClientId = "mvc", ClientName = "MyClient", AllowedGrantTypes = GrantTypes.Implicit, RedirectUris = { "http://localhost:5003/signin-oidc" }, PostLogoutRedirectUris = { "http://localhost:5003/signout-callback-oidc" }, AllowedScopes = new List { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.Email }, RequireConsent = false } }; }} ConfigureServices 方法中注入 IdentityServer4 服务:services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryIdentityResources(Config.GetIdentityResources()) .AddInMemoryClients(Config.GetClients()) .AddTestUsers(TestUsers.Users);
Configure 方法中添加 IdentityServer4 中间件:app.UseIdentityServer();
在完成上述配置后,新建客户端可以通过以下步骤实现:
dotnet new -i identityserver4.templates
ConfigureServices 方法中添加 GitHub 认证:services.AddAuthentication() .AddCookie("Cookies") .AddOpenIdConnect("oidc", options => { options.Authority = "http://localhost:5004"; options.RequireHttpsMetadata = false; options.ClientId = "mvc"; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; });Configure 方法中添加认证中间件:app.UseAuthentication();
登录成功后,可以通过浏览器获取 ClaimsIdentity,并根据需求进行相应操作。如需进一步配置或问题解决,可参考相关文档或社区资源。
在授权服务器中添加 GitHub 第三方登录,需在 ConfigureServices 方法中进行如下配置:
public void ConfigureServices(IServiceCollection services){ services.AddMvc(); services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryIdentityResources(Config.GetIdentityResources()) .AddInMemoryClients(Config.GetClients()) .AddTestUsers(TestUsers.Users); services.AddAuthentication() .AddGitHub(options => { options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme; options.ClientId = "your client"; options.ClientSecret = "your Secret"; });} 登录成功后,系统会返回相应的 ClaimsIdentity,用户可根据需求进行处理。
以上文档详细介绍了 OAuth 2.0 简化模式(implicit)的工作原理及 IdentityServer4 的配置方法,涵盖了从安装到客户端创建、运行测试以及第三方登录配置等内容,为开发者提供了完整的解决方案。
转载地址:http://zshbz.baihongyu.com/