使用Client ID和Secret的SharePoint OA

2019-10-24  本文已影响0人  达哥傻乐

SharePoint OAuth可以让用户使用Token代替用户名和密码来访问站点内容而不需要公开自己的登录凭据。
SharePoint App必须能有特定的客户端ID和客户端Secret,可以使用SharePoint站点管理控制台或者PowerShell来创建并分配给App。每一个App必须关联起码一个客户端ID。

用AppRegNew.aspx创建的Client Secret在创建满一年后会过期。我们可以使用PowerShell更新Client Secret。也可以将这个有效期增长到最大3年。最新更新的Client Secret的生效可能需要24小时,所以更新Client Secret的操作最好在过期前24小时进行。如果Client Secret过期了,App会返回错误“远程服务器返回错误:(401)未经授权。The remote server returned an error: (401) Unauthorized.”。

import-module MSOnline
 Connect-MsolService (provide the tenant administrator username and password)
 Store the client id in a variable
 $clientId="358658dc-f04b-4c37-a260-2227eb51dde1"
 
 Generate a key with default expiration (one year). 
 $bytes = New-Object Byte[] 32
 $rand = [System.Security.Cryptography.RandomNumberGenerator]::Create()
 $rand.GetBytes($bytes)
 $rand.Dispose()
 $newClientSecret = [System.Convert]::ToBase64String($bytes)
 New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Symmetric -Usage Sign -Value $newClientSecret
 New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Symmetric -Usage Verify -Value $newClientSecret
 New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Password -Usage Verify -Value $newClientSecret
 $newClientSecret
 
 Generate the client secret with three years expiration. 
    Includinh–EndDateparameter parameter on the three calls of the New-MsolServicePrincipalCredential cmdlet
 $bytes = New-Object Byte[] 32
 $rand = [System.Security.Cryptography.RandomNumberGenerator]::Create()
 $rand.GetBytes($bytes)
 $rand.Dispose()
 $newClientSecret = [System.Convert]::ToBase64String($bytes)
 $dtStart = [System.DateTime]::Now
 $dtEnd = $dtStart.AddYears(3)
 New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Symmetric -Usage Sign -Value $newClientSecret -StartDate $dtStart  –EndDate $dtEnd
 New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Symmetric -Usage Verify -Value $newClientSecret   -StartDate $dtStart  –EndDate $dtEnd
 New-MsolServicePrincipalCredential -AppPrincipalId $clientId -Type Password -Usage Verify -Value $newClientSecret   -StartDate $dtStart  –EndDate $dtEnd
 $newClientSecret

在app.config/web.config中更新新的Client Secret:

<add key="ClientId" value="your client id here" />
<add key="ClientSecret" value="your new secret here" />
<add key="SecondaryClientSecret" value="your old secret here" />

Thanks to:

Krishna KV: SharePoint OAuth using Client ID and Secret

达叔傻乐(darwin.zuo@163.com)

上一篇 下一篇

猜你喜欢

热点阅读