问题标签 [safe-stack]
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.
oauth - 具有 github 授权的安全堆栈
我试图将我的整个应用程序隐藏在身份验证后面(我将在此工作时处理授权),现在我希望每个 url 都需要 github 登录。我没有打开 github 登录页面。
我尝试将SAFE-stack 模板和"Using OAuth with Saturn"结合起来,但我没有得到 github 登录页面(我只在遵循 Saturn 指南时得到),我只是得到了正常的待办事项页面。如果我单击添加按钮,服务器会打印
并且该项目不会添加到待办事项列表中。
除了身份验证位之外,我已经尝试删除所有内容,并且与干净的安全模板相比,我所做的唯一更改是
dotnet paket add Saturn.Extensions.Authorization --project src/Server/Server.fsproj
- 手动降级两个依赖项
paket.lock
,否则会产生错误:Microsoft.AspNetCore.Authentication.Google
to(3.1.11)
和Microsoft.AspNetCore.Authentication.OpenIdConnect
to(3.1.11)
app
将值更改Server/Server.fs
为以下(我为此问题创建了一个新的 github auth 应用程序):
我的 gitHub 应用配置认证回调 url:http://localhost:8080/signin-github
docker - 在 docker 容器中部署时,身份验证重定向 uri 使用 http 而不是 https
我正在尝试将具有 AzureAD 身份验证的 SAFE-stack 应用程序部署到 docker 内的 Azure。dotnet fake run -t azure
使用直接部署到 azure ( )的构建脚本进行部署时,我得到了身份验证。但是当我通过 GitHub 操作将应用程序部署到 docker 容器中时,身份验证不起作用。
问题出redirect_uri
在请求中,而http
不是https
. 我认为问题可能出在中间件上,但我似乎无法修复它。我似乎有应该工作的正确配置(我也知道顺序很重要,但我认为它也是正确的顺序)。
这是我的 Server.fs:
我也试过:
force_ssl
在app
价值。我已经尝试过user_router
了app_config
。- 我试图将 url 更改为 https:
url "https://0.0.0.0:8085"
但应用程序因这些尝试而崩溃。
f# - F# SAFE 如何处理消息 DU 变种的增长?
在 F# SAFE 堆栈中有一个 DU 类型,它定义了在服务器和客户端之间流动的所有类型的消息。在示例应用程序中,其中有 <10 个,我查看了提供的示例 - 所有这些示例都没有很多可能的类型。但是如果应用不小怎么办——DU中会有数百种类型;这将变得难以维护。所以我决定把这个类型划分为子类型,并将逻辑放在相应的文件中。
这是我的简化类型:
登录状态在另一个文件中定义:
登录模块与登录一起使用:
请注意,它返回Model * Cmd<LoginState>
.
现在我需要修复我的更新功能:
这里的问题是我Cmd<LoginState>
从登录模块获取并需要以 Cmd<Msg2>
某种方式将其转换为。
所以我要么需要创建新Msg2
类型,要么将 DU 变体转换LoginMsg of LoginState
为Msg2
. 我不明白如何从中获取LogInResult
数据Cmd<LoginState>
。
我怎样才能解决这个问题?大型项目中如何解决消息类型多的问题?
azure - 使用 Azure AD B2C 用户流(或自定义策略)进行 SAFE Stack 身份验证——有人解决了这个问题吗?
直截了当但开放式的问题:是否有人成功地将 SAFE Stack 应用程序连接到 Azure AD B2C,以便来宾用户(在 B2C 租户中)可以通过定义的用户流或自定义策略登录?
可以让我结束我的方法循环的具体问题:知道为什么使用 Microsoft.Identity.Web 处理身份验证的应用程序会遇到这个记录不充分的错误,以及如何解决它?--
“ID 为 <<Ugly_GUID>> 的应用程序无法获取 ID 令牌,因为请求中未提供 openid 范围或应用程序未获得授权。”
迄今为止我失败的努力的详细信息: 通过一些修改,我能够按照 Ryan Palmer 的两部分系列为我的 SAFE Stack(v3,.NET 5)应用程序强制执行 Azure AD 身份验证:
- https://www.compositional-it.com/news-blog/safe-authentication-with-azure-active-directory/
- https://www.compositional-it.com/news-blog/safe-stack-authentication-with-active-directory-part-2/
这会导致我的真实Azure 登录授予我对应用程序的访问权限。但目标是启用用户流(或自定义策略,无论是否有效),以便在我的 Azure AD B2C 租户中获得授权的用户可以进行身份验证和使用该应用程序。使用 appsettings.json 中的以下设置(以及许多尝试的变体),对应用 URL 的调用成功地重定向到登录用户流:
“b2clogin” URI(与 Ryan Palmer 的原始版本中的 login.microsoftonline.com 相比)和 SignUpSignInPolicyId 成功调用了所需的用户流,并且我能够登录(和/或注册)保存在我的 Azure 中的虚拟用户广告 B2C 资源。但是当流程重定向到我的应用程序时,我得到上面列出的“openid 范围”错误。
该错误发生在 localhost 和部署到 Azure Web 应用实例的版本上,并且发生在 Firefox、Chrome 和 Edge 中。
其他 Azure AD B2C 详细信息:
- 我已经注册了一个 Web 应用,其返回 URL 为 https://<app_name>.azurewebsites.net/api/login-callback 和 https://localhost:8080/api/login-callback
- “访问令牌”和“ID 令牌”权限已在 B2C 注册应用的身份验证部分授予。
- 注册的应用程序有一个秘密(不是证书),但我没有在任何地方使用过这个值,我还没有看到任何文档表明它会在哪里使用。
- 在没有身份验证的情况下,SAFE Stack 应用程序在 localhost 和 Azure 上按预期工作。
f# - Fable.Reactstrap 未在客户端 fsproj SATE 堆栈上定义
我正在尝试在SAFE.TemplateFable.Reactstrap
的 Client 项目上使用。我已添加到 Nuget、Paket 和 NPM,但在执行. 这是代码的错误:Fable.Reactstrap
error FSHARP: The namespace 'Reactstrap' is not defined
dotnet run
真正的代码可以在我的 github 的 repo上找到。Fable.Reactstrap
本身已添加到项目的依赖项中并添加到paket.references
.
如何Fable.Reactstrap
在我的项目中解决此错误和用户?
f# - 如何在 SAFE 堆栈中为 Thoth.Json 编写编码器/解码器?
我正在使用 SAFE 堆栈构建一个应用程序,并且我的模型中有一个 System.Uri。当我运行我的代码时,我在控制台中收到一个错误“无法为 System.Uri 生成自动编码器......”
到目前为止,我的谷歌搜索已经让我到了这里
然后在我的 App.fs 中添加
我想我已经了解如何创建编码器,但我不知道如何编写解码器部分。
我显然可以用字符串替换我的 System.Uri 字段,但这感觉不是正确的解决方案。