asp.ner core 5.0 Grpc HttpApi 和jwt的集成 和跨域【https双向认证】

书接上文 Go Grpc Jwt身份认证和Gateway集成以及HTTPS双向认证, 那么它在asp.net core 里面怎么实现了, 前面asp.ner core 5.0 Grpc双向认证 和 restful api包装 外加swagger启用【VSCode创建】已经完成了大部分, 我们只要引入jwt 和跨域就了, 网上很多文章 都是用IdentityServer4【个人实际生产中没有使用过, 感觉比较中】。本文保持和go一至的风格,增加一个login方法

1.修改grpcserver\Protos\greet.proto 文件如下【客户端的文件不需要option部分】:

syntax = "proto3";

import "google/api/annotations.proto";
option csharp_namespace = "grpcserver";

package greet;

// The greeting service definition.
service Greeter {
  rpc Login (LoginRequest) returns (LoginReply) {
    option (google.api.http) = {
      post: "/v1/greeter/login"
      body: "*"
  };
 
  }
  rpc SayHello (HelloRequest) returns (HelloReply) {
    option (google.api.http) = {
      get: "/v1/greeter/{name}"
    };
  }
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings.
message HelloReply {
  string message = 1;
}

message LoginRequest{
  string username=1;
  string password=2;
}
message LoginReply{
  string status=1;
  string token=2;
}

客户端grpcclient\Protos\greet.proto 如下:

syntax = "proto3";

option csharp_namespace = "grpcserver";

package greet;

// The greeting service definition.
service Greeter {
    rpc Login (LoginRequest) returns (LoginReply);
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings.
message HelloReply {
  string message = 1;
}

message LoginRequest{
  string username=1;
  string password=2;
}
message LoginReply{
  string status=1;
  string token=2;
}

2.要使用jwt 需要增加相应的包Microsoft.AspNetCore.Authentication.JwtBearer,和go相同, 我们同样创建一个 创建token 和通过token 获取用户名的方法, 整个grpcserver\Services\GreeterService.cs如下:

你可能感兴趣的:(GO)