Angular вызов. NET Ошибка выдачи веб-API CORE 3.1; Невозможно получить документ из 'pii скрыт - PullRequest
0 голосов
/ 09 июля 2020

Мне нужно вызвать защищенный веб-API из приложения Angular 9, представив токен-носитель Azure B2 C JWT. Я использую Angular 9 с. NET CORE 3.1 Web API. Мне удалось сгенерировать токен Azure B2 C, но я застрял на вызове безопасной конечной точки веб-API, так как я получаю сообщение об ошибке на стороне сервера.

Startup.cs

public void ConfigureServices(IServiceCollection services)
    {
       //JWT Authentication 
        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(jwtConfig => 
            {
                jwtConfig.Audience = Configuration["AzureAdB2C:ResourceId"];
                jwtConfig.Authority = $"{Configuration["AzureAdB2C:Instance"]}{Configuration["AzureAdB2C:TanantId"]}";
                jwtConfig.RequireHttpsMetadata = false;
                jwtConfig.SaveToken = true;
                jwtConfig.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    ValidateIssuer =true,
                    ValidateAudience = true,
                    ValidateLifetime = true

                };
        });

 //CORS policy
 services.AddCors(options =>
                          options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin()));

Контроллер и конечная точка веб-API

[Authorize]
[Route("txn/v1/[controller]/[action]")]
[EnableCors("CorsPolicy")]
[ApiController]
public class DashboardController : ControllerBase
{
    [HttpGet]
    public ActionResult<HelloMessage> GetMessage()
    {
        var result = new HelloMessage()
        {
            GivenName = "james",
            ReturnMessage = "Dashboard@ Hello, Welcome to Digital tech"
        };
        return result;
    }

Angular перехватчик токена

@Injectable()
export class TokenInterceptorService implements HttpInterceptor{

constructor(private injector: Injector
   // private authservice: AuthService
    ){}

intercept(req, next){
    let authservice = this.injector.get(AuthService);
    console.log("from injector ", authservice.accessToken);
    let tokenizedRequest = req.clone({
        setHeaders:{
            Authorization: 'Bearer '+ authservice.accessToken
        }
    })
    return next.handle(tokenizedRequest)
}

 testAPI1(){
 
    console.log("calling test API ...");

    this.http.get('https://localhost:5001/txn/v1/Dashboard/GetMessage')
        .subscribe((data)=>{
            console.warn(data);
        })
}

Ошибка

enter image description here

enter image description here введите описание изображения здесь

...