我们有两个端点/auth
和/token
. 端点/auth
返回可在调用/token
以获取访问令牌时使用的授权代码。
使用 NuxtJS,auth
模块成为了要走的路。this.$auth.loginWith("company")
据我所知,登录过程运行良好。我被重定向到登录页面。我可以输入我的凭据,当这些凭据有效时,我会被重定向到配置的 URL。
到那时,一切都按预期工作。重定向将授权代码作为请求参数传递。
这是 URL 的样子:
http://localhost:3000/?state=Y6CWcCZanJ&session_state=2c966cd9-5834-4045-9bfb-6aa9f616f841&code=fbabf615-cd5e-4479-818a-6a7ba72de01b.2c966cd9-5834-4045-9bfb-6aa9f616f841.553d562b-c454-4681-83ae-98cd93dbfa90
但是,code
我希望auth
模块会自动调用/token
端点。但事实并非如此。这是为什么?
使用后是否需要显式调用它this.$auth.loginWith("company")
?就像是:
this.$auth.loginWith("company");
this.$auth.fetchToken();
或者它是隐式完成的?
这是里面的配置nuxt.config.js
...
auth: {
strategies: {
company: {
scheme: "oauth2",
endpoints: {
authorization:
"https://login.mycompany.com/auth/realms/apps/protocol/openid-connect/auth",
token:
"https://login.mycompany.com/auth/realms/apps/protocol/openid-connect/token",
userInfo:
"https://login.mycompany.com/auth/realms/apps/protocol/openid-connect/userinfo",
logout: "http://localhost:3000/logout"
},
token: {
name: "Authorization",
property: "access_token",
type: "Bearer",
maxAge: 1800
},
refreshToken: {
property: "refresh_token",
maxAge: 60 * 60 * 24 * 30
},
responseType: "code",
grantType: "authorization_code",
accessType: undefined,
redirectUri: "http://localhost:3000",
logoutRedirectUri: undefined,
clientId:
process.env.CLIENT_ID ||
"3004761-241-dab74c5e-ad70-11eb-bea4-4193bd361dc612123",
scope: ["all"],
codeChallengeMethod: "S256"
}
}
},
...