Skip to content

Commit d4c559a

Browse files
author
Ankit Bhanvadia
authored
Merge pull request #353 from Promact/RefreshTokenLifeScope
ConsumerAppRepository.cs - added client RefreshTokenUsage to only one…
2 parents 914053f + f33cc26 commit d4c559a

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

Promact.Oauth.Server/src/Promact.Oauth.Server/Repository/ConsumerAppRepository/ConsumerAppRepository.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ public async Task<List<ConsumerApps>> GetListOfConsumerAppsAsync()
9898
public async Task UpdateConsumerAppsAsync(ConsumerApps consumerApps)
9999
{
100100
var client = await _clientDataRepository.FirstOrDefaultAsync(x => x.Id == consumerApps.Id);
101+
client.RefreshTokenUsage = 1;
102+
client.RefreshTokenExpiration = 0;
101103
client.ClientName = consumerApps.Name;
102104
client.ClientId = consumerApps.AuthId;
103105
_clientDataRepository.UpdateAsync(client);
@@ -188,12 +190,13 @@ private IdentityServer4.Models.Client ReturnIdentityServerClientFromConsumerApp(
188190
new IdentityServer4.Models.Secret(consumerApp.AuthSecret.Sha256())
189191
},
190192
AllowOfflineAccess = true,
191-
RefreshTokenUsage = TokenUsage.ReUse,
193+
RefreshTokenUsage = TokenUsage.OneTimeOnly,
192194
AccessTokenLifetime = 86400,
193195
AuthorizationCodeLifetime = 86400,
194196
IdentityTokenLifetime = 86400,
195197
AbsoluteRefreshTokenLifetime = 5184000,
196-
SlidingRefreshTokenLifetime = 5184000
198+
SlidingRefreshTokenLifetime = 5184000,
199+
RefreshTokenExpiration = TokenExpiration.Sliding
197200
};
198201
}
199202

Promact.Oauth.Server/src/Promact.Oauth.Server/wwwroot/app/consumerapp/consumerapp-add/consumerapp-add.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ <h3>Add New Consumer App</h3>
1111
<div class="form-group">
1212
<div class="half-width align-left">
1313
<md-input-container class="full-width">
14-
<input mdInput placeholder="Auth Id" [(ngModel)]="consumerModel.AuthId" [disabled]="true" name="AuthId" #AuthId="ngModel">
14+
<input mdInput placeholder="Auth Id" [(ngModel)]="consumerModel.AuthId" [ngModelOptions]="{standalone: true}" [disabled]="true" name="AuthId" #AuthId="ngModel">
1515
</md-input-container>
1616
<button md-raised-button type="button" class="btn-back btn-green btn-reg" (click)="getRandomNumber(true)">Re-Generate</button>
1717
</div>
1818
<div class="half-width align-left">
1919
<md-input-container class="full-width">
20-
<input mdInput placeholder="Auth Secret" [(ngModel)]="consumerModel.AuthSecret" [disabled]="true" name="AuthSecret" #AuthSecret="ngModel">
20+
<input mdInput placeholder="Auth Secret" [(ngModel)]="consumerModel.AuthSecret" [ngModelOptions]="{standalone: true}" [disabled]="true" name="AuthSecret" #AuthSecret="ngModel">
2121
</md-input-container>
2222
<div [hidden]="!clientSecretIndicator" class="error">Please copy the client secret. It will be encoded after saving.</div>
2323
<button md-raised-button type="button" class="btn-back btn-green" (click)="getRandomNumber(false)">Re-Generate</button>
@@ -27,13 +27,13 @@ <h3>Add New Consumer App</h3>
2727
<div class="form-group">
2828
<div class="half-width align-left">
2929
<md-input-container class="full-width">
30-
<input mdInput placeholder="Name" type="text" name="consumerName" [(ngModel)]="consumerModel.Name" maxlength="255" required #consumerName="ngModel">
30+
<input mdInput placeholder="Name" type="text" name="consumerName" [(ngModel)]="consumerModel.Name" [ngModelOptions]="{standalone: true}" maxlength="255" required #consumerName="ngModel">
3131
</md-input-container>
3232
<div [hidden]="!(consumerName.touched && !consumerName.valid && consumerName.errors.required)" class="error">Name is required</div>
3333
</div>
3434
<div class="half-width align-left">
3535
<md-input-container class="full-width">
36-
<input mdInput placeholder="Call Back Url" type="text" name="consumerCallBackUrl" [(ngModel)]="consumerModel.CallbackUrl" maxlength="255" required #consumerCallBackUrl="ngModel" validateUrl>
36+
<input mdInput placeholder="Call Back Url" type="text" name="consumerCallBackUrl" [(ngModel)]="consumerModel.CallbackUrl" [ngModelOptions]="{standalone: true}" maxlength="255" required #consumerCallBackUrl="ngModel" validateUrl>
3737
</md-input-container>
3838
<div [hidden]="!(consumerCallBackUrl.touched && !consumerCallBackUrl.valid && consumerCallBackUrl.errors.required)" class="error">Call Back Url is required</div>
3939
<div [hidden]="!(consumerCallBackUrl.touched && !consumerCallBackUrl.valid && !consumerCallBackUrl.errors.required && consumerCallBackUrl.errors.url)" class="error">Call Back Url is not valid</div>
@@ -42,14 +42,14 @@ <h3>Add New Consumer App</h3>
4242
<div class="clearfix"></div>
4343
<div class="form-group">
4444
<div class="half-width align-left" style="position:relative;">
45-
<md2-select multiple class="full-width" [(ngModel)]="consumerModel.Scopes" (change)="scopeOnChange(consumerModel.Scopes)" placeholder="Select Scopes" required>
45+
<md2-select multiple class="full-width" [(ngModel)]="consumerModel.Scopes" [ngModelOptions]="{standalone: true}" (change)="scopeOnChange(consumerModel.Scopes)" placeholder="Select Scopes" required>
4646
<md2-option *ngFor="let i of scopes" [value]="i.value">{{i.name}}</md2-option>
4747
</md2-select>
4848
<div [hidden]="!clientScopeIndicator" class="error">Scope Required</div>
4949
</div>
5050
<div class="half-width align-left">
5151
<md-input-container class="full-width">
52-
<input mdInput placeholder="LogoutUrl" type="text" name="logoutUrl" [(ngModel)]="consumerModel.LogoutUrl" maxlength="255" required #logoutUrl="ngModel" validateUrl>
52+
<input mdInput placeholder="LogoutUrl" type="text" name="logoutUrl" [(ngModel)]="consumerModel.LogoutUrl" [ngModelOptions]="{standalone: true}" maxlength="255" required #logoutUrl="ngModel" validateUrl>
5353
</md-input-container>
5454
<div [hidden]="!(logoutUrl.touched && !logoutUrl.valid && logoutUrl.errors.required)" class="error">Log-Out Url is required</div>
5555
<div [hidden]="!(logoutUrl.touched && !logoutUrl.valid && !logoutUrl.errors.required && logoutUrl.errors.url)" class="error">Log-Out Url is not valid</div>

Promact.Oauth.Server/src/Promact.Oauth.Server/wwwroot/app/consumerapp/consumerapp-edit/consumerapp-edit.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ <h3>Edit Consumer App</h3>
88
</div>
99
</div>
1010
<form #consumerappEditForm="ngForm">
11-
<input type="hidden" [(ngModel)]="consumerModel.Id" name="id" />
11+
<input type="hidden" [(ngModel)]="consumerModel.Id" [ngModelOptions]="{standalone: true}" name="id" />
1212
<div class="form-group d-flex">
1313
<div class="half-width mr-25">
1414
<md-input-container class="full-width">
15-
<input mdInput placeholder="Auth Id" [(ngModel)]="consumerModel.AuthId" [disabled]="true" name="AuthId">
15+
<input mdInput placeholder="Auth Id" [(ngModel)]="consumerModel.AuthId" [ngModelOptions]="{standalone: true}" [disabled]="true" name="AuthId">
1616
</md-input-container>
1717
<button md-raised-button type="submit" class="btn-back btn-green" (click)="getRandomNumber(true)">Re-Generate</button>
1818
</div>
1919
<div class="half-width">
2020
<md-input-container class="full-width">
21-
<input mdInput [type]="clientSecretIndicator ? 'text':'password'" placeholder="Auth Secret" [(ngModel)]="consumerModel.AuthSecret" [disabled]="true" name="AuthSecret">
21+
<input mdInput [type]="clientSecretIndicator ? 'text':'password'" placeholder="Auth Secret" [(ngModel)]="consumerModel.AuthSecret" [ngModelOptions]="{standalone: true}" [disabled]="true" name="AuthSecret">
2222
</md-input-container>
2323
<button md-raised-button type="submit" class="btn-back btn-green" (click)="getRandomNumber(false)">Re-Generate</button>
2424
<div [hidden]="!clientSecretIndicator" class="error">Please copy the client secret. It will be encoded after saving.</div>
@@ -27,29 +27,29 @@ <h3>Edit Consumer App</h3>
2727
<div class="form-group d-flex">
2828
<div class="half-width mr-25">
2929
<md-input-container class="full-width">
30-
<input mdInput name="name" placeholder="Name" [(ngModel)]="consumerModel.Name" maxlength="255" required #name="ngModel">
30+
<input mdInput name="name" placeholder="Name" [(ngModel)]="consumerModel.Name" [ngModelOptions]="{standalone: true}" maxlength="255" required #name="ngModel">
3131
</md-input-container>
3232
<div [hidden]="!(name.touched && !name.valid && name.errors.required)" class="error">Name is required</div>
3333
</div>
3434
<div class="half-width mr-25">
3535
<md-input-container class="full-width">
36-
<input mdInput placeholder="Call Back Url" type="text" name="consumerCallBackUrl" [(ngModel)]="consumerModel.CallbackUrl" maxlength="255" required #consumerCallBackUrl="ngModel" validateUrl>
36+
<input mdInput placeholder="Call Back Url" type="text" name="consumerCallBackUrl" [(ngModel)]="consumerModel.CallbackUrl" [ngModelOptions]="{standalone: true}" maxlength="255" required #consumerCallBackUrl="ngModel" validateUrl>
3737
</md-input-container>
3838
<div [hidden]="!(consumerCallBackUrl.touched && !consumerCallBackUrl.valid && consumerCallBackUrl.errors.required)" class="error">Call Back Url is required</div>
3939
<div [hidden]="!(consumerCallBackUrl.touched && !consumerCallBackUrl.valid && !consumerCallBackUrl.errors.required && consumerCallBackUrl.errors.url)" class="error">Call Back Url is not valid</div>
4040
</div>
4141
</div>
4242
<div class="form-group">
4343
<div class="half-width" style="position:relative;">
44-
<md2-select multiple name="select" [(ngModel)]="consumerModel.Scopes" (change)="scopeOnChange(consumerModel.Scopes)" placeholder="Select Scopes" required>
44+
<md2-select multiple name="select" [(ngModel)]="consumerModel.Scopes" [ngModelOptions]="{standalone: true}" (change)="scopeOnChange(consumerModel.Scopes)" placeholder="Select Scopes" required>
4545
<md2-option *ngFor="let i of scopes" [value]="i.value">{{i.name}}</md2-option>
4646
</md2-select>
4747
</div>
4848
<div [hidden]="!clientScopeIndicator" class="error">Scope Required</div>
4949
</div>
5050
<div class="form-group">
5151
<md-input-container class="full-width">
52-
<input mdInput placeholder="LogoutUrl" type="text" name="logoutUrl" [(ngModel)]="consumerModel.LogoutUrl" maxlength="255" required #logoutUrl="ngModel" validateUrl>
52+
<input mdInput placeholder="LogoutUrl" type="text" name="logoutUrl" [(ngModel)]="consumerModel.LogoutUrl" [ngModelOptions]="{standalone: true}" maxlength="255" required #logoutUrl="ngModel" validateUrl>
5353
</md-input-container>
5454
<div [hidden]="!(logoutUrl.touched && !logoutUrl.valid && logoutUrl.errors.required)" class="error">Log-Out Url is required</div>
5555
<div [hidden]="!(logoutUrl.touched && !logoutUrl.valid && !logoutUrl.errors.required && logoutUrl.errors.url)" class="error">Log-Out Url is not valid</div>

0 commit comments

Comments
 (0)