Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ yarn.lock
package-lock.json
[eE]ncrypted.[sS]ecret.*
*.csproj.user
*.key
82 changes: 82 additions & 0 deletions Doppler.HelloMicroservice.Test/AuthorizationTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Testing;
using Xunit;
using Xunit.Abstractions;

namespace Doppler.HelloMicroservice
{
public class AuthorizationTest
: IClassFixture<WebApplicationFactory<Startup>>
{
const string TOKEN_EMPTY = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.e30.Nbd00AAiP2vJjxr78oPZoPRsDml5dx2bdD1Y6SXomfZN8pzJdKel2zrplvXCGBBYNBOo90rdYSlBCCo15rxsVydiFcAP84qZv-2mh4pFED9tVyDbxV5hvYDSg2bHPFyYFAi26fJusu_oYY3ne8OWxx-W1MEzNxh2hPfEKTkd0zVBm4dZv_irizRpa_qBwjn3hbCLUtOhBFbTTFItM9hESo6RwHvtQaB0667Sj8N97-bleCY5Ppf6bUUMz2A35PDb8-roF5Scf97lTZfug_DymgpPRSNK2VcRjfAynKfbBSih4QqVeaxR5AhYtXVFbQgByrynYNLok1SFD-M48WpzSA";
const string TOKEN_BROKEN = "eyJhbGciOiJSzI1NiIsInR5cCI6IkpXVCJ9.e0.Nbd00AAiP2vJjxr8oPZoPRsDml5dx2bdD1Y6SXomfZN8pzJdKel2zrplvXCGBBYNBOo90rdYSlBCCo15rxsVydiFcAP84qZv-2mh4pFED9tVyDbxV5hvYDSg2bHPFyYFAi26fJusu_oYY3ne8OWxx-W1MEzNxh2hPfEKTkd0zVBm4dZv_irizRpa_qBwjn3hbCLUtOhBFbTTFItM9hESo6RwHvtQaB0667Sj8N97-bleCY5Ppf6bUUMz2A35PDb8-roF5Scf97lTZfug_DymgpPRSNK2VcRjfAynKfbBSih4QqVeaxR5AhYtXVbQgByrynYNLok1SFD-M48WpzSA";
const string TOKEN_EXPIRE_20961002 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQwMDAwMDAwMDB9.aOGfzmkPUKPE9dpIBvH1tMmCOAjLnNQ_nPulDc8dVW0eQbpII5ijDM_QHs8rRI4k7WQFml_AI-KigLqH2kloT58UaVU9UoYsJhPbM7cDYTMvs718EoopTJVCT5liPZM884m26YoFk9DE3GWkgh959kHZAWnzEFqDcaPUcrtcbbK4i9MPdJa_3Pu5tmWbWwdK0d3yIAuPWiQCAc-mbEqDwMCuI57gnX9RtnE1p-iflLxjjtjpovR0cSlwR6ESpQhhdBipFGjpvNOXxgS9ufxKGPg3e6UWN4SJUQzaskwh9QkZRFz_ca5Ge_yuGSQ_c6ZNJaNclkhxnH4BS5w7nnlUdQ";
const string TOKEN_EXPIRE_20330518 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjIwMDAwMDAwMDB9.mll33c0kstVIN9Moo4HSw0CwRjn0IuDc2h1wkRrv2ahQtIG1KV5KIxYw-H3oRfd-PiCWHhIVIYDP3mWDZbsOHTlnpRGpHp4f26LAu1Xp1hDJfOfxKYEGEE62Xt_0qp7jSGQjrx-vQey4l2mNcWkOWiE0plOws7cX-wLUvA3NLPoOvEegjM0Wx6JFcvYLdMGcTGT5tPd8Pq8pe9VYstCbhOClzI0bp81iON3f7VQP5d0n64eb_lvEPFu5OfURD4yZK2htyQK7agcNNkP1c5mLEfUi39C7Qtx96aAhOjir6Wfhzv_UEs2GQKXGTHl6_-HH-ecgOdIvvbqXGLeDmTkXUQ";
const string TOKEN_EXPIRE_20010908 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMDAwMDAwMDB9.ZRjcfFTB973pD_gwB562BLCcszQOzubvr9TP6pWgA4wVIPeCzsX4waH7J9LPydY3pkp0UxaOffv-vJO0xZoWE9eUHdQbk8sy1CBgFM_dgyxY7DHKt0vuSjkPQ-VryPYwrTXO5lvaaDtMXIz6NdGC62oFQbvNOWD60790g2xzloge1bLpBYT1YRJK5dblA_mG9IJ1Id4R1HIZEmOIkOIhGU8-GQx2bP82xpudcEjOUZS7buRHpSy_Oy6fjy1KfUND_IbePuNF_t4n8Qo-MahshaphJrZlIKpEbw9gqlviH5s4lyU7AHhEs0JoTb2RGNTLq9h6m4Y-eMEFmPXnWN6dAA";
const string TOKEN_SUPERUSER_EXPIRE_20961002 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc1NVIjp0cnVlLCJleHAiOjQwMDAwMDAwMDB9.qLXdLXbGvZy_OkDGjJwkMoVBZhqEWLFR5oQtVxomauTg6gPAIGzKW8gZugFzrZnSG24chIY5_DhdlM93pnf8Tju803Q-CDbr4gI_2vsl-lxczqsf-Mk-wM09LeByQixuF8jMT5ICC1SNoZZ1-7ZkXe9WhF6hyowyXUy9ga73_ugfhrVOXgGImd6V9fAgR34Aiorqm3brzocZAB4MWDDNiO-Zf1CiDRDXnqwNareL2GtzGCC9H8FEDouSVovXWLzii13touavyEpIQ0XIbch09rTrpn00ZDHskEJtD8FI6zZPw26C48KfZFOlg4OwsFIl0v2UEEJs2uXHnVhL2_5nLQ";
const string TOKEN_SUPERUSER_EXPIRE_20330518 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc1NVIjp0cnVlLCJleHAiOjIwMDAwMDAwMDB9.rUtvRqMxrnQzVHDuAjgWa2GJAJwZ-wpaxqdjwP7gmVa7XJ1pEmvdTMBdirKL5BJIE7j2_hsMvEOKUKVjWUY-IE0e0u7c82TH0l_4zsIztRyHMKtt9QE9rBRQnJf8dcT5PnLiWkV_qEkpiIKQ-wcMZ1m7vQJ0auEPZyyFBKmU2caxkZZOZ8Kw_1dx-7lGUdOsUYad-1Rt-iuETGAFijQrWggcm3kV_KmVe8utznshv2bAdLJWydbsAUEfNof0kZK5Wu9A80DJd3CRiNk8mWjQxF_qPOrGCANOIYofhB13yuYi48_8zVPYku-llDQjF77BmQIIIMrCXs8IMT3Lksdxuw";
const string TOKEN_SUPERUSER_EXPIRE_20010908 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc1NVIjp0cnVlLCJleHAiOjEwMDAwMDAwMDB9.FYOpOxrXSHDif3lbQLPEStMllzEktWPKQ2T4vKUq5qgVjiH_ki0W0Ansvt0PMlaLHqq7OOL9XGFebtgUcyU6aXPO9cZuq6Od196TWDLMdnxZ-Ct0NxWxulyMbjTglUiI3V6g3htcM5EaurGvfu66kbNDuHO-WIQRYFfJtbm7EuOP7vYBZ26hf5Vk5KvGtCWha4zRM55i1-CKMhXvhPN_lypn6JLENzJGYHkBC9Cx2DwzaT683NWtXiVzeMJq3ohC6jvRpkezv89QRes2xUW4fRgvgRGQvaeQ4huNW_TwQKTTikH2Jg7iHbuRqqwYuPZiWuRkjqfd8_80EdlSAnO94Q";
const string TOKEN_SUPERUSER_FALSE_EXPIRE_20330518 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc1NVIjpmYWxzZSwiZXhwIjoyMDAwMDAwMDAwfQ.qMY3h8VhNxuOBciqrmXpTrRk8ElwDlT_3CYFzqJdXNjnJhKihFVMwjkWVw1EEckCWbKsRoBr-NgRV0SZ0JKWbMr2oGhZJWtqmKA05d8-i_MuuYbxtt--NUoQxg6AsMX989PGf6fSBzo_4szb7J0G6nUvvRxXfMnHMpaIAQUiBLNOoeKwnzsZFfI1ehmYGNmtc-2XyXOEHAnfZeBZw8uMWOp4A5hFBpVsaVCUiRirokjeCMWViVWT9NnVWbA60e_kfLjghEcXWaZfNnX9qtj4OC8QUB33ByUmwuYlTxNnu-qiEaJmbaaTeDD2JrKHf6MR59MlCHbb6BDWt20DBy73WQ";
const string TOKEN_ACCOUNT_123_TEST1_AT_TEST_DOT_COM_EXPIRE_20961002 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOjEyMywidW5pcXVlX25hbWUiOiJ0ZXN0MUB0ZXN0LmNvbSIsInJvbGUiOiJVU0VSIiwiZXhwIjo0MDAwMDAwMDAwfQ.Xm7dzdoK2MMGm9UmoHhuMID68LbYJi1Rk1NWl2BliGuzvVwVnNP3bvx3cHvylHa_xNVTAZDLzzyoLZCZSffWUUBdcSHJbXPdX42JZiLCE7AlWTfM85n4M84-5xmWWVEMY8KGwIKLJoE3EHWrRuv0AkO3ysWasoYhg3XQGVwxcw-sglM1eoo7TAiCxivgclLtTRfJZQ0_n3KkWGsTBJmfpHY2fMX1Mzr3RuBIr5Spwoni0dFRMQB8ilMlNl6GMuLPPRH2kjtzyk68U02_HniHdaABlblkJLRWHk6IOczajkvKJntdWsX_mbXHgNW49oaIy1CxR4Zh0XdrGjcMegLKkQ";
const string TOKEN_ACCOUNT_123_TEST1_AT_TEST_DOT_COM_EXPIRE_20330518 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOjEyMywidW5pcXVlX25hbWUiOiJ0ZXN0MUB0ZXN0LmNvbSIsInJvbGUiOiJVU0VSIiwiZXhwIjoyMDAwMDAwMDAwfQ.E3RHjKx9p0a-64RN2YPtlEMysGM45QBO9eATLBhtP4tUQNZnkraUr56hAWA-FuGmhiuMptnKNk_dU3VnbyL6SbHrMWUbquxWjyoqsd7stFs1K_nW6XIzsTjh8Bg6hB5hmsSV-M5_hPS24JwJaCdMQeWrh6cIEp2Sjft7I1V4HQrgzrkMh15sDFAw3i1_ZZasQsDYKyYbO9Jp7lx42ognPrz_KuvPzLjEXvBBNTFsVXUE-ur5adLNMvt-uXzcJ1rcwhjHWItUf5YvgRQbbBnd9f-LsJIhfkDgCJcvZmGDZrtlCKaU1UjHv5c3faZED-cjL59MbibofhPjv87MK8hhdg";
const string TOKEN_ACCOUNT_123_TEST1_AT_TEST_DOT_COM_EXPIRE_20010908 = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOjEyMywidW5pcXVlX25hbWUiOiJ0ZXN0MUB0ZXN0LmNvbSIsInJvbGUiOiJVU0VSIiwiZXhwIjoxMDAwMDAwMDAwfQ.JBmiZBgKVSUtB4_NhD1kiUhBTnH2ufGSzcoCwC3-Gtx0QDvkFjy2KbxIU9asscenSdzziTOZN6IfFx6KgZ3_a3YB7vdCgfSINQwrAK0_6Owa-BQuNAIsKk-pNoIhJ-OcckV-zrp5wWai3Ak5Qzg3aZ1NKZQKZt5ICZmsFZcWu_4pzS-xsGPcj5gSr3Iybt61iBnetrkrEbjtVZg-3xzKr0nmMMqe-qqeknozIFy2YWAObmTkrN4sZ3AB_jzqyFPXN-nMw3a0NxIdJyetbESAOcNnPLymBKZEZmX2psKuXwJxxekvgK9egkfv2EjKYF9atpH5XwC0Pd4EWvraLAL2eg";

private readonly WebApplicationFactory<Startup> _factory;
private readonly ITestOutputHelper _output;

public AuthorizationTest(WebApplicationFactory<Startup> factory, ITestOutputHelper output)
{
_factory = factory;
_output = output;
}

[Theory]
[InlineData("/hello/anonymous", HttpStatusCode.OK)]
public async Task GET_helloAnonymous_should_not_require_token(string url, HttpStatusCode expectedStatusCode)
{
// Arrange
var client = _factory.CreateClient(new WebApplicationFactoryClientOptions());

// Act
var response = await client.GetAsync(url);

// Assert
Assert.Equal(expectedStatusCode, response.StatusCode);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure but we need that anonymous endpoint just not response 401 status code.
Assert.NotEqual(HttpStatusCode.Unauthorized, response.StatusCode);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not understand.

Is not enough waiting for a 200 OK?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, It is, but I am thinking on another response status like InternalServerError, and that still a valid scenario.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I understand now.

I think that an InternalServerError is not enough to confirm that anonymous authorization is working fine.

Maybe there is another problem, so, in that case, the result should not be pass, maybe inconclusive, but in that case, the test will be more complex.

}

[Theory]
[InlineData("/hello/anonymous", TOKEN_EMPTY, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_EXPIRE_20961002, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_EXPIRE_20330518, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_EXPIRE_20010908, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_BROKEN, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_SUPERUSER_EXPIRE_20961002, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_SUPERUSER_EXPIRE_20330518, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_SUPERUSER_EXPIRE_20010908, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_SUPERUSER_FALSE_EXPIRE_20330518, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_ACCOUNT_123_TEST1_AT_TEST_DOT_COM_EXPIRE_20961002, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_ACCOUNT_123_TEST1_AT_TEST_DOT_COM_EXPIRE_20330518, HttpStatusCode.OK)]
[InlineData("/hello/anonymous", TOKEN_ACCOUNT_123_TEST1_AT_TEST_DOT_COM_EXPIRE_20010908, HttpStatusCode.OK)]
public async Task GET_helloAnonymous_should_accept_any_token(string url, string token, HttpStatusCode expectedStatusCode)
{
// Arrange
var client = _factory.CreateClient(new WebApplicationFactoryClientOptions());

var request = new HttpRequestMessage(HttpMethod.Get, url)
{
Headers = { { "Authorization", $"Bearer {token}" } }
};

// Act
var response = await client.SendAsync(request);
_output.WriteLine(response.GetHeadersAsString());

// Assert
Assert.Equal(expectedStatusCode, response.StatusCode);
}
}
}
16 changes: 16 additions & 0 deletions Doppler.HelloMicroservice.Test/HttpResponseMessageExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System;
using System.Linq;
using System.Net.Http;

namespace Doppler.HelloMicroservice
{
public static class HttpResponseMessageExtensions
{
public static string GetHeadersAsString(this HttpResponseMessage response)
{
var keysAndValues = response.Headers.SelectMany(x => x.Value.Select(y => new { x.Key, Value = y }));
var headerLines = keysAndValues.Select(x => $"{x.Key}: {x.Value}");
return string.Join("\n", headerLines);
}
}
}
20 changes: 20 additions & 0 deletions Doppler.HelloMicroservice/Controllers/HelloController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace Doppler.HelloMicroservice.Controllers
{
[ApiController]
public class HelloController
{
[HttpGet("/hello/anonymous")]
public string GetForAnonymous()
{
return "Hello anonymous!";
}
}
}
1 change: 1 addition & 0 deletions Doppler.HelloMicroservice/Doppler.HelloMicroservice.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.5" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.14" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.1.2" />
</ItemGroup>
Expand Down
13 changes: 13 additions & 0 deletions Doppler.HelloMicroservice/private-keys-dev/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Unit Testing in the local environment

To be able to run unit tests, if those require JWT to execute correctly, then you will be able to generate/update them by using the following private key located in this directory ([`dev.priv.key`](./dev.priv.key))

The steps needed to do so are the following

1. Go to [jwt.io](https://jwt.io/)
2. Select RS256 as the algorithm
3. Enter the payload
4. Paste the key mentioned above in the private key section
5. [jwt.io](https://jwt.io/) will generate a token ready to be used in the tests

**Note:** The tokens generated for unit tests will be valid for that context only
Comment on lines +1 to +13
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lo veo bien como parte de este commit. También quedaría claro en un siguiente commint con docs:

28 changes: 28 additions & 0 deletions Doppler.HelloMicroservice/private-keys-dev/dev.priv.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDNSjHHFVz1x/dX
Tl5OZPwZ4oiiMuXqiHO7ZMMfmzhtCsnufkIiVR6yde4ubLmz8OdMusPZaMrmuCMc
T6g1PVtRtgLFFVoeygL1McyNtbAQY6S6s1xnr3VHLKZCaVbzjzkRvFbAlRQ66Swm
2q/ePkioxbMsFrKYAJDnbOEnZojZ0FlyUB9Nv5inKkNPCi1h0tPD9gIJNFu4wfp4
9psuugCpqlVV0qapl8ggnTE5HzXchA0qva1ef3fyPWQHhrINsUEI0QapRvSCM5qm
Uy/Ek+q616x8zPGWV6ktXylm+sTCD0qPgWqkgJ9CDJ1nOhd8d9BrcjaYcY0HKtqi
bbrFIvxNAgMBAAECggEAIj5iF0dk/kqg45ta99C4jMjQ6d17pKemRngEZF1MCERo
crP07C0uta4eUPgp8e4ZZx8wVC+6yMmmca6H7HmTpgmqZJ2vLrubyrLH4EuSVumI
LOyGWXVXJsw335QawP3/EwpLnkw/16PVjZWlCHlzPVPdE1ml6N0PTstGs3/TDCH8
VOoc26Hig/fUWrkAt8wGX5xkcrXLDfX7ln61g00n6Y0NaFrXCYAX0Eeqbtjpedni
mAmlEI9TiWgG98jc1SmvY7GfY8EqE1c36VqAyS/jWJh+oSlOAkPhQkWo+gNfH4Du
H/Y0dtBgJ1NpFBWzveZkSYtKBQMA9NecsRxQPnvlMQKBgQD3haPhmubBPBG4OLi3
l6sqs4cXwR981F6R7aejiuDKgLXhBk2ZJIswnK4kvhREUo6gkI4b6lA0ePY49F0M
CGeAYwWRmaZTqi9eUmnlEDRt2s1+466pNzKaMSuykyz0ugRhSPN6PMJnDUorJiQR
zhjxqP452UpC3to9dQubN1MCewKBgQDUUj9a4f4SYxQ6GLjKitEO/FK4GHHX92EH
xZxupcDIOMM1VNpmf4sD+fhaKvhjqGqYTRcANrpcd2oxKvV1u7K+XgUV9CtPhsY+
YAgnHgRVnbmj3U/ChwEBujBkAeGk4DtM62fmK95HYzrleuiwo1x6KNghdVFNKJUk
+1cJ2caF1wKBgC2NZayWUlNLl8M8hRocin6wTXNcskvJ1aGriAd7/oSmDVLdUxiU
9hy7KP1QEfDE9MSt9clDZQFTJZUzu5AEV+/zyUmTal3JWzBToHNseQmik+D/S9yO
cPyZgf46QbLELRwuTci4N9q5QmYQfeDc+hA3VpoU2CrYUneu+7TUCK3TAoGBAIrS
Y/4mORsIkRcTRu+XJ+2maOdZhEXyxwxv1kI6OfwvsOLT4iCWT+x/qjQ6WEHAwkFm
Vh2bqun+Yf5X2jnqSYpSqvyZsx/CPShXXb1F0QuxnslXUGkeIDhi5nTdDg3hVqSK
XlqOYD1I0h9s52tmxHZS8k2eCVRrrmiJtXUJYNXtAoGBAL/0PQ7tBpdzhDOWtp+9
/sxUWRbG9MlaamfCZQxyW8Yad+bUZkbPyQwIre0xcE2xg8kGO7iDvNyo/LbOX+FW
z3Cp3CSHBBcxqAn1Z5qUSiZRZtfE6kZ2ZY3/hGa8UdgKYdBRJvbXr0j1UvtdboC9
ICCAKDNsX3lcb2PteQC1AjZm
-----END PRIVATE KEY-----
1 change: 1 addition & 0 deletions Doppler.HelloMicroservice/private-keys-dev/dev.priv.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<RSAKeyValue><Modulus>zUoxxxVc9cf3V05eTmT8GeKIojLl6ohzu2TDH5s4bQrJ7n5CIlUesnXuLmy5s/DnTLrD2WjK5rgjHE+oNT1bUbYCxRVaHsoC9THMjbWwEGOkurNcZ691RyymQmlW8485EbxWwJUUOuksJtqv3j5IqMWzLBaymACQ52zhJ2aI2dBZclAfTb+YpypDTwotYdLTw/YCCTRbuMH6ePabLroAqapVVdKmqZfIIJ0xOR813IQNKr2tXn938j1kB4ayDbFBCNEGqUb0gjOaplMvxJPqutesfMzxllepLV8pZvrEwg9Kj4FqpICfQgydZzoXfHfQa3I2mHGNByraom26xSL8TQ==</Modulus><Exponent>AQAB</Exponent><P>94Wj4ZrmwTwRuDi4t5erKrOHF8EffNReke2no4rgyoC14QZNmSSLMJyuJL4URFKOoJCOG+pQNHj2OPRdDAhngGMFkZmmU6ovXlJp5RA0bdrNfuOuqTcymjErspMs9LoEYUjzejzCZw1KKyYkEc4Y8aj+OdlKQt7aPXULmzdTAns=</P><Q>1FI/WuH+EmMUOhi4yorRDvxSuBhx1/dhB8WcbqXAyDjDNVTaZn+LA/n4Wir4Y6hqmE0XADa6XHdqMSr1dbuyvl4FFfQrT4bGPmAIJx4EVZ25o91PwocBAbowZAHhpOA7TOtn5iveR2M65XrosKNceijYIXVRTSiVJPtXCdnGhdc=</Q><DP>LY1lrJZSU0uXwzyFGhyKfrBNc1yyS8nVoauIB3v+hKYNUt1TGJT2HLso/VAR8MT0xK31yUNlAVMllTO7kARX7/PJSZNqXclbMFOgc2x5CaKT4P9L3I5w/JmB/jpBssQtHC5NyLg32rlCZhB94Nz6EDdWmhTYKthSd677tNQIrdM=</DP><DQ>itJj/iY5GwiRFxNG75cn7aZo51mERfLHDG/WQjo5/C+w4tPiIJZP7H+qNDpYQcDCQWZWHZuq6f5h/lfaOepJilKq/JmzH8I9KFddvUXRC7GeyVdQaR4gOGLmdN0ODeFWpIpeWo5gPUjSH2zna2bEdlLyTZ4JVGuuaIm1dQlg1e0=</DQ><InverseQ>v/Q9Du0Gl3OEM5a2n73+zFRZFsb0yVpqZ8JlDHJbxhp35tRmRs/JDAit7TFwTbGDyQY7uIO83Kj8ts5f4VbPcKncJIcEFzGoCfVnmpRKJlFm18TqRnZljf+EZrxR2Aph0FEm9tevSPVS+11ugL0gIIAoM2xfeVxvY+15ALUCNmY=</InverseQ><D>Ij5iF0dk/kqg45ta99C4jMjQ6d17pKemRngEZF1MCERocrP07C0uta4eUPgp8e4ZZx8wVC+6yMmmca6H7HmTpgmqZJ2vLrubyrLH4EuSVumILOyGWXVXJsw335QawP3/EwpLnkw/16PVjZWlCHlzPVPdE1ml6N0PTstGs3/TDCH8VOoc26Hig/fUWrkAt8wGX5xkcrXLDfX7ln61g00n6Y0NaFrXCYAX0EeqbtjpednimAmlEI9TiWgG98jc1SmvY7GfY8EqE1c36VqAyS/jWJh+oSlOAkPhQkWo+gNfH4DuH/Y0dtBgJ1NpFBWzveZkSYtKBQMA9NecsRxQPnvlMQ==</D></RSAKeyValue>
9 changes: 9 additions & 0 deletions Doppler.HelloMicroservice/public-keys-dev/dev.pub.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzUoxxxVc9cf3V05eTmT8
GeKIojLl6ohzu2TDH5s4bQrJ7n5CIlUesnXuLmy5s/DnTLrD2WjK5rgjHE+oNT1b
UbYCxRVaHsoC9THMjbWwEGOkurNcZ691RyymQmlW8485EbxWwJUUOuksJtqv3j5I
qMWzLBaymACQ52zhJ2aI2dBZclAfTb+YpypDTwotYdLTw/YCCTRbuMH6ePabLroA
qapVVdKmqZfIIJ0xOR813IQNKr2tXn938j1kB4ayDbFBCNEGqUb0gjOaplMvxJPq
utesfMzxllepLV8pZvrEwg9Kj4FqpICfQgydZzoXfHfQa3I2mHGNByraom26xSL8
TQIDAQAB
-----END PUBLIC KEY-----
1 change: 1 addition & 0 deletions Doppler.HelloMicroservice/public-keys-dev/dev.pub.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<RSAKeyValue><Modulus>zUoxxxVc9cf3V05eTmT8GeKIojLl6ohzu2TDH5s4bQrJ7n5CIlUesnXuLmy5s/DnTLrD2WjK5rgjHE+oNT1bUbYCxRVaHsoC9THMjbWwEGOkurNcZ691RyymQmlW8485EbxWwJUUOuksJtqv3j5IqMWzLBaymACQ52zhJ2aI2dBZclAfTb+YpypDTwotYdLTw/YCCTRbuMH6ePabLroAqapVVdKmqZfIIJ0xOR813IQNKr2tXn938j1kB4ayDbFBCNEGqUb0gjOaplMvxJPqutesfMzxllepLV8pZvrEwg9Kj4FqpICfQgydZzoXfHfQa3I2mHGNByraom26xSL8TQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
3 changes: 3 additions & 0 deletions demo.http
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ GET {{base}}/swagger/index.html

###
GET {{base}}/version.txt

###
GET {{base}}/hello/anonymous