小编Bar*_*rto的帖子

ASP.NET Core 和 NextAuthJS

我有 3 个单独的申请:

  • 身份服务器4
  • JS 客户端使用 Next 和 NextAuth.js 进行身份验证。
  • ASP.NET Core 休息 API

身份服务器在与其他服务器不同的域中运行:

https://login.example.com
Run Code Online (Sandbox Code Playgroud)

另一方面,客户端和 API 在同一个域中运行

由于它们共享相同的域,我希望 asp 直接使用 NextAuth 使用的 cookie。

Rest API 需要标头 ( Authorization: Bearer <token>) 中的访问令牌。为了能够添加 ASP.NET Core 与身份验证标头分开读取(因为它被其他应用程序使用...),还可以添加 cookie 身份验证。

我所做的就是读取 cookie:

context.Request.Cookies["next-auth.session-token"] 
Run Code Online (Sandbox Code Playgroud)

并解密它。

但这就是我遇到问题的地方。接下来发送的 JWT 不是 accessToken,而是包含访问令牌的 JSON:

{
  "accessToken": "a.b.c",
  "refreshToken": "asasa",
  "user": {
    "id": "d3223",
    "name": "Test"
  },
  "iat": 1652801889,
  "exp": 1655393889,
  "jti": "27c172ff-f579-4271-a3ca-c77393630f1b"
}
Run Code Online (Sandbox Code Playgroud)

但问题出现了:

  • 如何让 ASP.NET Core 获取 JWT …

cookies asp.net-core next-auth

5
推荐指数
0
解决办法
574
查看次数

IIS-URL重写,URL规则为小写,但查询字符串除外

嗨,我在IIS中使用URL重写模块.我会创建一个规则来转换小写网址.但是,我遇到了问题.我的目标是做到以下几点:

http://www.doMain.com/App/ActIon?X=1&y=3&JJ=3... => http://www.domain.com/app/action?X=1&y=3&JJ=3...
Run Code Online (Sandbox Code Playgroud)

我的第一次失败尝试是:

<rule name="LowerCaseRule1" stopProcessing="true">
  <match url="[A-Z]" ignoreCase="false" />
  <action type="Redirect" url="{ToLower:{URL}}" />
</rule>
Run Code Online (Sandbox Code Playgroud)

结果:

http://www.doMain.com/App/ActIon?X=1&y=3&JJ=3... => http://www.domain.com/App/ActIon?X=1&y=3&JJ=3...
Run Code Online (Sandbox Code Playgroud)

它只适用于域(因为URL变量只有域)

我的第二次失败尝试是:

<rule name="Convert to lower case" stopProcessing="true">  
  <match url=".*[A-Z].*" ignoreCase="false" />  
  <action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />  
</rule>
Run Code Online (Sandbox Code Playgroud)

结果:

http://www.doMain.com/App/ActIon?X=1&y=3&JJ=3... => http://www.domain.com/app/action?x=1&y=3&jj=3...
Run Code Online (Sandbox Code Playgroud)

这也适用于查询字符串.因此我没有为我服务.

我的第三次失败尝试是:

<rule name="Convert to lower case" stopProcessing="true">  
  <match url="^(.*[A-Z].*)(\/.*)" ignoreCase="false" />  
  <action type="Redirect" url="{ToLower:{R:1}}{R:2}" redirectType="Permanent" />  
</rule>
Run Code Online (Sandbox Code Playgroud)

结果:

http://www.doMain.com/App/ActIon?X=1&y=3&JJ=3... => http://www.domain.com/app/ActIon?X=1&y=3&JJ=3...
Run Code Online (Sandbox Code Playgroud)

这个问题不适用于最后一条路径.

这导致我不需要满足以下规则:

http://www.doMain.com/App => http://www.domain.com/app
Run Code Online (Sandbox Code Playgroud)

问题:

是否有任何规则允许我做我需要的事情?

这个模块是否正确?

因为我有另一种选择是使用ASP.NET路由引擎(例如https://github.com/schourode/canonicalize)

regex iis asp.net-mvc web-config url-rewrite-module

3
推荐指数
1
解决办法
3304
查看次数