当我在本地测试我的应用程序时,它可以工作,但是当我将它部署到 prod env 时它不再工作。我收到 401 错误。 应用部署在远程服务器上时是否有特定的配置?
我使用 spring boot + angular 6 + msal v1。
重现步骤 在 azure 上为 spring boot api 配置一个应用程序 在 azure 上为使用 msal 版本 1 的 angular 6 ap 配置一个应用程序 Exemple link
失败给出的日志消息
Http failure response for https://domain:8443/app-api/toto: 401 OK
这是我的 Spring Boot 配置:
@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and() // (1)
.authorizeRequests().anyRequest().authenticated() // (2)
.and()
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt); // (3)
}
}
app.properties:
spring.security.oauth2.resourceserver.jwt.issuer-uri=https://sts.windows.net/tenantId
Angular msal 配置:
export const protectedResourceMap: [string, string[]][] = [
['https://graph.microsoft.com/v1.0/me', ['user.read']],
[azureConfig.api_endpoint, ['api://appId/api_access_scop']]
];
export const unprotectedResource = [
];
export const scopes = [
"api://appId/api_access_scop"
];
MsalModule.forRoot({
auth: {
clientId: azureConfig.applicationID,
authority: "https://login.microsoftonline.com/" + azureConfig.tenantID,
validateAuthority: true,
redirectUri: azureConfig.rediretUri,
postLogoutRedirectUri: azureConfig.rediretUri,
navigateToLoginRequestUrl: true,
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: true,
},
},
{
popUp: false,
consentScopes: scopes,
unprotectedResources: unprotectedResource,
protectedResourceMap: protectedResourceMap,
extraQueryParameters: {}
}
)
答案 0 :(得分:0)
401 是 Unauthorized 和客户端错误响应,可能由于以下情况导致。
以上点的参考是:https://airbrake.io/blog/http-errors/401-unauthorized-error
答案 1 :(得分:0)
显然,这是一个已知问题:see
当我在服务器上配置 SSL 证书时,它开始工作