- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 IdentityServer4 的自定义 Open Id Connect 服务器.此 SSO 服务器具有用于非标准 Open Id Connect 操作的自定义端点。
为了使用此操作,我需要在客户端应用程序的请求中创建一个状态参数。客户端应用程序是带有 blazor 服务器端的 dotnet core 3.0 预览应用程序。
我正在使用以下内容注册 SSO 提供程序:
services.AddAuthentication(options => {
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "oidc";
})
.AddCookie()
.AddOpenIdConnect("oidc", options => {
options.ClientId = oidcClientId;
options.ClientSecret = "secret";
options.Authority = "https://test.org";
options.ResponseType = "code id_token";
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("extra");
options.GetClaimsFromUserInfoEndpoint = true;
options.SaveTokens = true;
options.RequireHttpsMetadata = false;
});
<a href=@($"https://test.org/custom/change-organization/{organization.OrganizationCode}?client_id=local-data-manager&redirect_uri=http://localhost:5000/signin-oidc&response_type=code id_token&scope=openid custom profile&nonce={GenerateNonce()}&state={GenerateState()}")>@organization.Name</a>
private string GenerateNonce()
{
string nonce = Convert.ToBase64String(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString() + Guid.NewGuid().ToString()));
return DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture) + "." + nonce;
}
private string GenerateState()
{
var state = GenerateNonce();
AuthenticationProperties authProperties = new AuthenticationProperties
(
new Dictionary<string, string>
{
{ OpenIdConnectDefaults.UserstatePropertiesKey, state },
}
);
authProperties.RedirectUri = "http://localhost:5000";
//This StateDataFormat does not use the correct DataProtectionProvider
return openIdOptions.CurrentValue.StateDataFormat.Protect(authProperties);
}
openIdOptions
是依赖注入(inject)。如
@inject IOptionsMonitor<OpenIdConnectOptions> openIdOptions
An unhandled exception has occurred while executing the request.
System.Exception: An error was encountered while handling the remote login.
System.Exception: Unable to unprotect the message.State.
Unprotect
我认为是相同的
StateDataFormat
之前注入(inject)的保护器:
Options.StateDataFormat.Unprotect(message.State);
GenerateState()
时看到以下内容:
trce: Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector[31]
Performing protect operation to key {cdf7e79b-8d1a-4e7e-a093-fea402dbba8c} with purposes ('/app/DataManager', 'Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler', '', 'v1').
trce: Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector[5]
Performing unprotect operation to key {cdf7e79b-8d1a-4e7e-a093-fea402dbba8c} with purposes ('/app/DataManager', 'Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler', 'oidc', 'v1').
OpenIdConnectOptions
配置的。
DataProtector
是提供不同的目的吗?它们是不同的对象吗?我的配置中是否缺少某些内容?如何从内部框架和我注入(inject)的内容中获得相同的提供者?
最佳答案
我有同样的问题并找到了答案,我们需要通过方案名称来获取正确的实例:
return _openIdOptions.Get("oidc").CurrentValue.StateDataFormat.Protect(authProperties);
关于c# - 如何获取 OpenIdConnectOptions StateDataFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57581119/
我有一个使用 IdentityServer4 的自定义 Open Id Connect 服务器.此 SSO 服务器具有用于非标准 Open Id Connect 操作的自定义端点。 为了使用此操作,我
我正在尝试按照本教程在 .NET 核心 Web 应用程序中进行 Azure AD 身份验证: https://github.com/Azure-Samples/active-directory-asp
我一直在使用我从示例创建的库,该库允许我使用 Azure Active Directory 对 .NET 核心 Web 应用程序进行身份验证,并利用各种 OpenIdConnectOptions 事件
请告诉我为什么我不能向 OpenIdConnectOptions 添加任何范围?它不适用于 ASP.NET Core MVC 客户端,但与 js 客户端一起工作正常! 我的代码... Identity
我正在尝试使用 OpenId 将 ASP.NET 应用程序连接到 Salesforce,目前这是我迄今为止的连接代码。我想我得到了除了redirect_uri参数之外的所有内容,该参数必须与另一端的值
看起来 RC2 中有重大变化。 我试图使用这部分旧代码来设置 OpenId 连接: app.UseOpenIdConnectAuthentication(options => { option
我正在使用 aspnetcore v2.1(最新的开发分支)来创建一个 Multi-Tenancy 应用程序,其中每个租户都针对他们自己的 Azure B2C AD 租户进行身份验证。选择这种方法是为
我是一名优秀的程序员,十分优秀!