update oauth

This commit is contained in:
lendry
2026-06-25 14:40:05 +03:00
parent 1796008a28
commit 6c63343fc7
19 changed files with 623 additions and 200 deletions

View File

@@ -0,0 +1,45 @@
import { Controller, Get } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { CoreGrpcService } from '../core-grpc.service';
import { buildOpenIdConfiguration, resolveOAuthIssuer } from '../lib/oauth-issuer';
@ApiTags('OpenID Connect')
@Controller('.well-known')
export class WellKnownController {
constructor(private readonly core: CoreGrpcService) {}
@Get('openid-configuration')
@ApiOperation({
summary: 'OpenID Connect Discovery',
description: 'Метаданные OIDC-провайдера. Issuer и endpoints берутся из PUBLIC_API_URL в настройках.'
})
async openIdConfiguration() {
const issuer = await resolveOAuthIssuer(this.core);
return buildOpenIdConfiguration(issuer);
}
@Get('jwks.json')
@ApiOperation({
summary: 'JWKS',
description: 'Пустой набор ключей: токены подписываются HS256 на стороне IdP. Для проверки id_token используйте userinfo.'
})
jwks() {
return { keys: [] };
}
}
@ApiTags('OpenID Connect')
@Controller('oauth/authorize')
export class OAuthAuthorizeDiscoveryController {
constructor(private readonly core: CoreGrpcService) {}
@Get('.well-known/openid-configuration')
@ApiOperation({
summary: 'OpenID Discovery (alias)',
description: 'Совместимость с клиентами, ошибочно использующими authorization endpoint как issuer.'
})
async openIdConfigurationAlias() {
const issuer = await resolveOAuthIssuer(this.core);
return buildOpenIdConfiguration(issuer);
}
}