gpt4 book ai didi

asp.net - 身份服务器 - 不记名 token 身份验证 - 如何跟踪失败的授权?

转载 作者:行者123 更新时间:2023-12-02 04:04:40 25 4
gpt4 key购买 nike

我在我的开发环境中设置了一个简单的身份服务器,配置如下:

    public void Configuration(IAppBuilder app)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();

app.Map("/identity", id =>
{
id.UseIdentityServer(new IdentityServerOptions()
{
SiteName = "Tomas Services Identity Provider",
SigningCertificate = CertificateService.Load(),
Factory = IdentityFactory.Configure("IdServerConn"),
RequireSsl = false
});
});
}

工厂根据编写服务器代码的好人提供的 Entity Framework 示例进行设置。

然后我有一个客户端 Web api 站点设置为使用不记名身份验证,如下所示:

    private const string IdentityServerUrl = "http://localhost/mysite/identity";

public void Configuration(IAppBuilder app)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Trace()
.CreateLogger();

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = IdentityServerUrl,
RequiredScopes = new[] { "my_scope" }
});

var config = new HttpConfiguration();

WebApiConfig.Register(config);

app.UseNinjectMiddleware(NinjectWebCommon.CreateKernel).UseNinjectWebApi(config);
}

然后我使用 fiddler 对此进行测试,检索访问 token ,然后将其添加到我的 Web api POST 中的相应 header 中。

现在,它可以使用 IIS Express 运行并在 https 下运行。我想更改此(用于开发)以在没有 SSL 的情况下运行。所做的唯一更改是在 IDP 配置中将 RequiresSSL 设置为 false 并更改客户端中授权机构的 URL。客户端现在也在 http 下运行,而不是在 SSL 下运行。

我现在在发布到 Web API 时不断收到 401 - 未经授权的响应。我可以毫无问题地检索访问 token ,但我无法理解为什么我的 Web API 站点未对我进行身份验证。

我在身份服务器站点上设置了日志记录,并且我可以看到获取访问 token 的调用没有问题,但是当我通过 Web API 调用时我看到的唯一进一步日志记录是一次性的:

w3wp.exe Information: 0 : 2016-10-17 15:09:58.459 +01:00 [Information] Start discovery request 2016-10-17 15:09:58.460 +01:00 [Debug] Cache miss: CachingScopeStore.allscopes.public w3wp.exe Information: 0 : 2016-10-17 15:09:58.549 +01:00 [Information] Start key discovery request

是否有任何方法可以从 UseIdentityServerBearerTokenAuthentication OWIN 中间件获取进一步的日志记录(用于调试目的)?我不知道为什么我无法连接,特别是因为这是在 IIS Express 下工作(尽管在 SSL 下)。


对于后人来说,我按照下面的 @leastprivilege 启用日志记录时遇到的错误是:

Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Error: 0 : Authentication failed System.TypeLoadException: Could not load type 'IdentityModel.Extensions.HashStringExtensions' from assembly 'IdentityModel, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null'. at IdentityServer3.AccessTokenValidation.ValidationEndpointTokenProvider.d__1.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at IdentityServer3.AccessTokenValidation.ValidationEndpointTokenProvider.ReceiveAsync(AuthenticationTokenReceiveContext context) at Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationHandler.d__0.MoveNext()

详情请参阅下面的答案。

最佳答案

文档展示了如何启用 token 验证日志记录(在 API 项目中)

https://identityserver.github.io/Documentation/docsv2/consuming/diagnostics.html

关于asp.net - 身份服务器 - 不记名 token 身份验证 - 如何跟踪失败的授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40089138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com