问题标签 [servicestack-auth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
308 浏览

.net-core - 如何在 ServiceStack 中实现 Auth0 认证?

我的设置由 3 个组件组成:

Auth0,我在其中添加用户并管理他们的权限。
我的前端 SPA 网页,用作我的 API 的外壳。
我的 API,使用 ServiceStack 制作。

这是身份验证流程,正如我想象的那样:

用户在客户端应用程序中单击“使用 Auth0 登录”。
然后用户被重定向到 Auth0,他在此处登录并接收 JWT。
此 JWT 存储在客户端上,并添加到我的 API 的每个请求中。
我的 API (ServiceStack) 通过检查它是否与 Auth0 给我的证书匹配来验证 JWT。
我的 API (ServiceStack) 检查用户是否具有所需的权限,由 Auth0 管理并包含在 JWT 中。

理想情况下,这应该像向服务添加 [Authorize] 和 [RequiredPermission] 标记以配置访问哪些服务所需的权限一样简单。

我尝试以许多不同的方式实现这一点,但我开始认为我的整个方法存在缺陷,因此很难添加任何代码片段来说明问题。我是从根本上误解了某些东西,还是应该可以在 ServiceStack 中设置这些东西?我可以使用http://jwt.io/从 Auth0 获取并验证 JWT 是否正确,问题只是将此验证集成到 ServiceStack 中。

0 投票
0 回答
122 浏览

c# - 如何使用 ServiceStack 和 AAD 授权 React/TypeScript 应用程序

我们在使用 Azure Active Directory/ServiceStack 后端授权我们的前端 React/Typescript 应用程序时遇到了一些问题。据我们所知,问题源于前端和后端位于不同的 URL 上。

在后端,我们使用此插件 https://github.com/jfoshee/ServiceStack.Authentication.Aad将 AAD 与 ServiceStack 集成。前端是一个用 Typescript 编写的 React 应用程序,@servicestack/client客户端用于与 API 交互。

当 API 重定向回应用程序时,在通过 Azure Active Directory 进行身份验证后,它会设置一些 cookie,包括ss-idss-pid. 问题似乎是这些cookie仅设置在API url上,而不是App。因此,每当从应用程序发送任何 API 请求时,请求中都不会包含 cookie,并且请求会遇到 401。

我们对流程的理解如下:

我们尝试手动暂停应用程序,并将授权过程中从标头中提取的 cookie 注入到exampleapp.com. 即使这样,由 发出的 API 请求exampleapp.com似乎也不包含这些 cookie,因此会收到 401。我们正在使用 ServiceStack 的工具为前端生成 TypeScript DTO。

我们尝试发出的请求的一个简单示例,但收到 401:

我们缺少什么?为什么不exampleapp.com使用 cookie 发送请求?我们如何正确设置 cookie,exampleapp.com以便它们可以在第一时间发送?

这是否可能,或者 ServiceStack 和 Active Directory 的组合是否需要应用程序和 API 在同一个域中?

0 投票
1 回答
52 浏览

servicestack - 如何在 ServiceStack 中进行身份验证后重定向到帖子

也许我正在尝试做一些愚蠢的事情,但是......

我正在尝试为 Azure AD 构建 ServiceStack OAuth 提供。重定向 URI 由 SS 身份验证传递,但我不确定当发起请求是 POST 而不是 GET 时该怎么做。最终重定向始终是 GET,我无法弄清楚如何保留初始表单数据。

艾米,我试图做一些合理的事情?关于我应该在哪里保持理智的任何线索?

0 投票
1 回答
64 浏览

servicestack - 使用 ServiceStack 中的自定义身份验证提供程序的 ArgumentNullException

我已经基于 CredentialsAuthProvider 为 LDAP (Active Directory) 创建了一个自定义身份验证提供程序。按照文档,我覆盖了 TryAuthenticate 和 OnAuthenticated,最后返回 true。我也试过没有 OnAuthenticated。

我正在使用UseDistinctRoleTablesOrmLiteAuthRepository,并且我在表中观察到角色是在 UserRole 中创建的。

但是我遇到了异常:ArgumentNullException。字段名“s”。

我已经剥离了我的代码。在 Startup.cs 中:

0 投票
1 回答
29 浏览

authentication - 使用 ServiceStack 和更多提供商进行身份验证

我声明我使用 ServiceStack 来验证我的服务。我的问题是以下我正在通过凭据和 API 密钥开发两种身份验证方法。实现是正确的,但我希望通过凭据对某些服务进行身份验证,而通过 API 密钥对其他服务进行身份验证。从文档中阅读,在我看来,我理解在 [Authenticate] 属性中插入与引用 Auth 类(凭据或 API)的属性名称相等的提供程序参数就足够了,得到 [Authenticated ("apikey")]例如。不幸的是,在实现上面的示例时,如果我使用凭据进行身份验证,我可以调用该服务,而我只希望通过 API 密钥调用该服务。你有什么解决办法?多谢

0 投票
0 回答
56 浏览

authentication - ServiceStack ServiceClient在认证后存储错误的cookies

我对 Servicestack 身份验证有一个奇怪的问题。我开发了一个 Asp .Net Core web 应用程序(.net core 3.1),其中实现了带有凭据身份验证提供程序的 servicestack 身份验证。如果我使用任何浏览器进行身份验证,一切都会正常工作。

相反,如果我尝试使用指向 servicestack /auth/{provider} api 的 JsonServiceClient 从外部应用程序进行身份验证,我会遇到这个问题:身份验证进行顺利,但JsonServiceClient 对象将 SessionId 存储在 cookie(s-id/s-pid)中,不同于AuthenticateResponse 的 SessionId。这是我的例子。

如果我检查 cookies 变量中的值,我会发现s-ids-pid与响应的 sessionId 完全不同。

另一个奇怪的事情是,如果我在这些代码行下第二次重复身份验证,现在s-pid cookie 等于响应的 sessionId!为什么??

在网络应用程序的启动中,我有这些代码行:

0 投票
1 回答
1042 浏览

servicestack - 使用有效的 API 密钥禁止获取 403

我有一项受保护的服务,但我需要创建链接以进行共享。所以我来了这个功能:

我正在调用该服务,直接从 ApiKey 表中获取 API,在调试控制台中我什至可以看到正确的 SQL(选择其中 id 和 id 是我的 api 密钥)并匹配活动用户,但是我仍然从 ServiceStack 获得 403。

使用apikey查询参数。使用 Https(具有有效的 CA 签名证书)。

0 投票
1 回答
46 浏览

servicestack - 尝试从适配器“NetCoreContainerAdapter”解析服务“System.Boolean”时出错

最近转换为 .NET Core 后,我在尝试使用我们的任何 AuthProviders 进行身份验证时收到以下错误:

“尝试从适配器'NetCoreContainerAdapter'解析服务'System.Boolean'时出错:对象引用未设置为对象的实例。”

我在 .NET Core 3.1 上使用 ServiceStack.Core 5.9.2。

堆栈跟踪

0 投票
1 回答
23 浏览

servicestack - 如何对属于 .Net 5 Identity MVC 网站的 ServiceStack API 进行身份验证

我有一个基于 .Net 5 ServiceStack mvcidentity 示例的测试项目。对于基于 Web 的访问,身份验证按预期工作。

直接从另一个应用程序访问 hello 示例的 API 可以正常工作,因为不需要身份验证。但是,如果我尝试连接到需要身份验证的 API 方法之一,我会收到一条错误消息,指出未定义身份验证提供程序。

根据此示例,从另一台计算机上的应用程序访问其中一种身份验证所需方法的正确方法是什么,在该计算机上没有用户登录?我想我们需要在身份验证管道中添加基本身份验证或类似的东西?

0 投票
1 回答
115 浏览

servicestack - 将 JwtAuthProviderReader 与 ServiceStack 和 AWS Cognito 一起使用

我们在AWS Cognito中使用现有的用户池,为我们的 api 服务器创建了一个单独的客户端应用程序。

使用 Cognito 中的托管 UI 时accessTokenidTokenrefreshToken

问题是当将JwtAuthProviderReader添加到AuthFeature以进行令牌验证时,我们使用 [Authenticate] 属性创建的任何端点都会得到“ HTTP/1.1 401 Unauthorized ”。

模数和指数来自众所周知的响应参考https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_xxXxxXXxX/.well-known/jwks.json中的en

受 Authenticate 属性保护的服务总是返回HTTP/1.1 401 Unauthorized

我们如何知道我们的JwtAuthProviderReader设置是否正确?